如何锁定手机的屏幕方向,而不是平板电脑?(机器人)

Sji*_*eke 16 android portrait tablet screen-orientation

我一直致力于Android项目,旨在兼容Android手机和平板电脑.在平板电脑上,该应用程序运行良好,看起来也很好.然而,在手机上我们已经以编程方式和布局方式遇到问题(使用10.1英寸屏幕比4英寸屏幕容易得多).为解决其中一些问题,我们决定停用屏幕方向,但仅限于手机版本,至少暂时.

问题很简单,我如何停用Android手机的屏幕方向,同时保持Android平板电脑的活动状态?我知道我可以在清单文件中执行此操作,但是,这也将锁定我认为的平板电脑的方向.

Mar*_*era 12

您也可以从应用程序中执行此操作.

锁定屏幕方向(Android)http://developer.android.com/reference/android/app/Activity.html#setRequestedOrientation (
int)

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
Run Code Online (Sandbox Code Playgroud)

属性可以在这里找到:

http://developer.android.com/reference/android/R.attr.html#screenOrientation


要检测,如果Android设备是平板电脑或手机,您应该使用此解决方案(不同的SO问答),/sf/answers/651579911/

  • 为什么这个答案被设置为有效?它没有解释如何在手机和平​​板电脑上设置不同的行为。 (3认同)

Tje*_*rkW 11

首先,尽量避免这样做.我之所以选择todo,是因为它很容易解决复杂的问题.但实际上,尽量避免这样做.

如果您真的想要它,请使用以下代码.

在您的活动中创建一个方法:

    private boolean isTablet() {
        return (this.getResources().getConfiguration().screenLayout
            & Configuration.SCREENLAYOUT_SIZE_MASK)
            >= Configuration.SCREENLAYOUT_SIZE_LARGE;
    }
Run Code Online (Sandbox Code Playgroud)

然后在你的onCreate中执行以下操作:

    if (!isTablet()) {
        // stop screen rotation on phones because <explain>
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    }
Run Code Online (Sandbox Code Playgroud)