在Android上为手机和平板电脑设置不同的方向

时间:2013-10-09 13:11:59

标签: android screen-orientation android-orientation

我想在我的应用中执行以下操作:

  • 仅适用于手机的人像模式
  • 平板电脑的纵向模式和横向模式。

我知道我可以轻松更改清单文件中的方向,但这会影响整个应用程序。

我还想过创建单独的活动,处理不同的版本,但我不知道如何使用该应用程序检测设备的类型。

有谁知道如何解决这个问题?

5 个答案:

答案 0 :(得分:9)

您可以使用以下代码区分正常/大屏幕并相应地阻止方向更改。

public static boolean isTablet(Context context) {
    return (context.getResources().getConfiguration().screenLayout
            & Configuration.SCREENLAYOUT_SIZE_MASK)
            >= Configuration.SCREENLAYOUT_SIZE_LARGE;
}

答案 1 :(得分:6)

在活动的onCreate方法中,检查应用是否在手机或平板电脑上运行。如果应用程序正在手机设置活动屏幕方向上运行,则仅限肖像。

将这些文件添加到您的res文件夹中。

RES /值/ vars.xml:

<?xml version="1.0" encoding="utf-8"?><resources><bool name="is_tablet">false</bool></resources>



RES /值-sw600dp / vars.xml:

<?xml version="1.0" encoding="utf-8"?><resources><bool name="is_tablet">true</bool></resources>

在onCreate方法关闭所有活动时,请添加以下代码:

    if (!getResources().getBoolean(R.bool.is_tablet)) {
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    }

答案 2 :(得分:1)

您必须使用Android屏幕限定符识别平板电脑: Screen qualifiers

然后在右侧布局文件夹中输入所需的设置。例如,您只能在大屏幕的布局xml文件中添加属性 orientation:portrait | landscape ,并为所有其他文件添加 orientation:portrait 。请参阅此处的文件夹结构:

res / layout / my_layout.xml //正常屏幕尺寸的布局(“默认”) res / layout-small / my_layout.xml //小屏幕尺寸的布局 res / layout-large / my_layout.xml //大屏幕尺寸的布局 res / layout-xlarge / my_layout.xml //超大屏幕尺寸的布局 res / layout-xlarge-land / my_layout.xml //横向格式超大的布局

查看Google指南:http://developer.android.com/guide/practices/screens_support.html

答案 3 :(得分:0)

我想你可以为它做一些小技巧,试试Configuration.screenLayout

  switch (this.getResources().getConfiguration().screenLayout) {
        case Configuration.SCREENLAYOUT_SIZE_SMALL:
                return "small";
            case Configuration.SCREENLAYOUT_SIZE_NORMAL:
                return "normal";
            case Configuration.SCREENLAYOUT_SIZE_LARGE:
                return "large";
            case 4: // screen xlarge 
                return "xlarge";
            default:
                return "undefined";
            }
        }

谢谢

答案 4 :(得分:0)

不幸的是,你遇到的问题变成了灰色地带。我们可以破译手机的密度和设备的物理尺寸。但是没有什么能真正决定我们,手机是什么以及平板电脑是什么。有时手机有7英寸高,有些平板电脑专门用作电子阅读器等,它们的密度或大小可能不同。

但是,上面的Santacrab建议的表格可以与使用适当的布局属性一起使用,无论屏幕的大小如何,都会相应地调整大小。当然,在某些情况下,使用碎片分割屏幕和较小的屏幕是有意义的,以避免屏幕过度拥挤,但从Santacrab链接中脱离的链接也应提供一些良好的指导。