16

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

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

4

4 回答 4

12

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

锁定屏幕方向 (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

于 2011-11-18T10:15:51.323 回答
11

首先,尽量防止这样做。我选择这样做是因为它可以轻松解决复杂问题。但实际上,尽量避免这样做。

如果您真的想这样做,请使用以下代码。

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

    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);
    }
于 2014-03-25T11:29:24.833 回答
2

如果您在运行时通过获取屏幕大小然后 make 来处理它,这似乎不是不可能的RunTimeConfigurationChanges,那么它可能会对您有所帮助。

试试这个处理运行时更改

如果你成功了,请告诉我..

谢谢。

于 2011-11-18T10:19:16.997 回答
1

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

      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

创建单独的活动是更好的方法,因为它易于维护选项卡和电话版本。

于 2012-03-26T06:55:02.007 回答