Android:基于屏幕大小限制活动方向

3

我有一个应用程序,无论是在大屏幕或超大屏幕上的任何方向都看起来很好,但在手机上应该被限制为纵向。我知道你可以在清单中限制Activity的方向,但是否有一种条件性的方法呢?或者,在Activity本身中是否有一种属性可以设置支持哪些方向?

1个回答

9

这是我在我的应用程序中使用的解决方案:

public void onCreate(Bundle savedState) {
    //...

    if(isScreenLarge()) {
        // width > height, better to use Landscape
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    } else {
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    }
}

public boolean isScreenLarge() {
    final int screenSize = getResources().getConfiguration().screenLayout
            & Configuration.SCREENLAYOUT_SIZE_MASK;
    return screenSize == Configuration.SCREENLAYOUT_SIZE_LARGE
            || screenSize == Configuration.SCREENLAYOUT_SIZE_XLARGE;
}

非常感谢。我所做的唯一更改是使用SCREEN_ORIENTATION_UNSPECIFIED而不是SCREEN_ORIENTATION_PORTRAIT,因为我希望平板电脑支持横向和纵向两种方向。 - mtmurdock
1
请注意,在调用setRequestedOrientation()之后,如果发生活动旋转,onCreate()方法将会被调用两次。 - Sergey Stasishin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接