1

我正在尝试将屏幕方向锁定到调用应用程序时的位置,以免在屏幕旋转时崩溃(是的,我使用过

android:configChanges="方向|keyboardHidden"

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

android:configChanges="方向|keyboardHidden|screenSize"

并且较低的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),结果都是:当我以纵向启动应用程序时,它工作正常。屏幕方向锁定为纵向模式。但是,当我在横向进行时,它会不断改变方向。

我做错了什么?提前致谢

4

2 回答 2

1

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

于 2013-03-05T16:25:42.977 回答
0

难道你不能做一个常数,Configuration.ORIENTATION_PORTRAIT只是getOrient在使用方法2时将它与它进行比较。然后如果它们相等,则将其设置为纵向,否则将其设置为横向。

于 2013-03-05T16:07:36.423 回答