我想在我的应用中执行以下操作:
我知道我可以轻松更改清单文件中的方向,但这会影响整个应用程序。
我还想过创建单独的活动,处理不同的版本,但我不知道如何使用该应用程序检测设备的类型。
有谁知道如何解决这个问题?
答案 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屏幕限定符识别平板电脑:
然后在右侧布局文件夹中输入所需的设置。例如,您只能在大屏幕的布局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链接中脱离的链接也应提供一些良好的指导。