如何将屏幕旋转锁定到当前状态

时间:2013-03-05 16:01:53

标签: android screen-orientation

我正在尝试将屏幕方向锁定到调用应用程序时的位置,以便在屏幕旋转时不会崩溃(是的,我已经使用了

  

机器人:configChanges = “取向| keyboardHidden”

并且它在低版本的Android上运行良好,但似乎对于较高的版本它应该是

  

机器人:configChanges = “取向| keyboardHidden |屏幕尺寸”

并且较低的Android版本不支持screenSize参数。

所以,我尝试过这个解决方案(1):

  

setRequestedOrientation(   getResources()。getConfiguration()。orientation);

和另一个(2):

  

setRequestedOrientation(getScreenOrientation());

其中,

public int getScreenOrientation()
{
    Display getOrient = getWindowManager().getDefaultDisplay();
    int orientation = Configuration.ORIENTATION_UNDEFINED;

        if(getOrient.getWidth() < getOrient.getHeight()){
            orientation = Configuration.ORIENTATION_PORTRAIT;
        }else { 
             orientation = Configuration.ORIENTATION_LANDSCAPE;
        }

    return orientation;
}

,在两种情况下(1和2),结果是: 当我以纵向方向启动应用程序时,它工作正常。屏幕方向锁定为纵向模式。 但是,当我以横向方向进行时,它会不断改变方向。

我做错了什么? 提前致谢

2 个答案:

答案 0 :(得分:1)

您的方向配置问题在于,即使设备在启动应用时处于横向方向,仍会以纵向模式创建应用,然后根据需要切换到横向。一般来说,除非是游戏,否则你不应该强迫方向。您应该修复该应用,以便在方向更改时不会崩溃。

答案 1 :(得分:0)

在使用方法2时,你不能创建Configuration.ORIENTATION_PORTRAIT的常量并将其与getOrient进行比较。然后,如果它们相等,则将其设置为纵向,否则将其设置为横向。