【问题标题】:How do I lock screen orientation for phone, but not for tablet? (Android)如何锁定手机的屏幕方向,而不是平板电脑? (安卓)
【发布时间】:2011-11-18 10:10:53
【问题描述】:

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

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

【问题讨论】:

    标签: android tablet screen-orientation portrait


    【解决方案1】:

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

    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

    【讨论】:

    • 为什么这个答案设置为有效?它没有解释如何在手机和平​​板电脑上设置不同的行为。
    【解决方案2】:

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

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

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

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

    【讨论】:

      【解决方案3】:

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

      试试这个Handling Runtime Changes

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

      谢谢。

      【讨论】:

      • 我同意你的观点,但可以做到。为此: 1. 获取设备的屏幕分辨率。 2.覆盖activity中的onConfigurationChanged方法。
      【解决方案4】:

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

            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-07
        • 1970-01-01
        • 1970-01-01
        • 2018-05-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多