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

时间:2011-11-18 10:10:53

标签: android tablet screen-orientation portrait

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

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

4 个答案:

答案 0 :(得分:12)

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

Lock screen orientation (Android)
http://developer.android.com/reference/android/app/Activity.html#setRequestedOrientation(int)

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

属性可以在这里找到:

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


要检测,如果Android设备是平板电脑或手机,您应该使用此解决方案(不同的SO Q& A),https://stackoverflow.com/a/9308284/492624

答案 1 :(得分:11)

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

如果你真的想要它,请使用以下代码。

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

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

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

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

答案 2 :(得分:2)

如果你在运行时处理这个问题,通过获取屏幕大小然后制作RunTimeConfigurationChanges,它似乎并非不可能,那么它可能对你有帮助。

试试这个Handling Runtime Changes

如果你在这方面取得成功,请告诉我。

感谢。

答案 3 :(得分:1)

一种方法是为手机版和平板电脑版创建单独的活动。然后在android清单文件中修复它们的方向。另一种方法是检查当前使用的设备,并使用代码

在活动本身中修复方向
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

创建单独的活动是更好的方式,因为它易于维护标签和手机版本。