如何在Android手机上锁定屏幕方向,但不锁定平板电脑的屏幕方向?

17

我一直在开发一个 Android 项目,旨在兼容 Android 手机和平板电脑。在平板电脑上,应用程序功能良好,外观也很好。但是,在手机上,我们遇到了很多程序和布局方面的问题(10.1 英寸屏幕比 4 英寸的屏幕更容易处理)。为了解决其中一些问题,我们已决定暂时仅为手机版本停用屏幕方向。

问题很简单,如何在 Android 手机上禁用屏幕方向,同时保持 Android 平板电脑的屏幕方向活跃?我知道我可以在清单文件中完成这个操作,但我相信这也会锁定平板电脑的屏幕方向。

4个回答

12

首先,试着避免这样做。我选择这样做是因为它可以轻松解决一个复杂的问题,但是真的,请尽量避免这样做。

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

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

    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);
    }

11

3
为什么这个答案被设置为有效答案?它没有解释如何在手机和平板上设置不同的行为。 - Antonio F.

2

看起来,如果您在运行时获取屏幕大小并进行RunTimeConfigurationChanges,那么这似乎是可能的。请尝试使用处理运行时更改。如果成功,请让我知道。

谢谢。


我同意你的看法,这是可以做到的。具体操作如下:
  1. 获取设备的屏幕分辨率。
  2. 在活动中重写onConfigurationChanged方法。
- Ravi Sharma

1

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

      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

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

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