如何动态设置屏幕方向

时间:2012-09-23 17:39:07

标签: android user-interface

我的最新(和第一个)Android应用程序为用户提供了首选项,可以将屏幕固定到肖像或横向,或者让传感器确定方向。为了对用户偏好做出反应,我有类似

的内容
public static void setOrientation(Activity a,int orientation) {

    switch (orientation) {
    case (1): {
        a.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
        break;
    }
    case (2): {
        a.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        break;
    }
    case (3): {
        a.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        break;
    }
    }   
}

我在onCreate / onRestart上调用它来相应地设置方向。

我现在面临的问题是,当用户从一个活动切换到另一个活动时(选择了固定方向),有时屏幕仍然根据传感器定向,在屏幕拍摄之前分开一秒钟根据要求定向。当用户选择固定方向时,有没有办法完全关闭传感器。我试着添加

a.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
到目前为止还没有成功。我很确定我会监督一些明显的事情,任何启示如何动态地实现方向的固定都会受到高度赞赏。

非常感谢

马丁

修改

我在一篇新帖子中重述了这个问题:

android - unexpected brief orientation change at switch of activity

2 个答案:

答案 0 :(得分:0)

尝试将此添加到您的清单中:

android:configChanges="keyboardHidden|orientation|screenSize">

这可以防止onPauseonResume

上的方向更改

答案 1 :(得分:0)

试试这个......

<activity android:name="com.myapp.MyActivity"
          android:label="@string/app_name"
          android:configChanges="orientation|screenSize"
          />

更多看看这里.....

http://digitaldumptruck.jotabout.com/?p=897

这可能会对你有帮助。