Android:如何按设备类型(平板电脑,手机)设置强制设备方向?

时间:2016-02-03 12:05:50

标签: android android-layout

我需要根据设备类型设置强制定位设备,以便使用相关视图(平板电脑的横向视图和移动设备的纵向)旋转无法在设备上更改。

因为我想在应用程序启动期间为所有活动设置方向,我认为我应该识别主要活动中的设备类型,该活动由与视图相关的其他活动扩展。

我怎么能以正确的方式做到这一点?

非常感谢任何建议。

4 个答案:

答案 0 :(得分:2)

在主要活动(Launcher活动)或Application类

中使用它
if (isTablet(mContext))
                setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
            else
                setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

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

答案 1 :(得分:1)

在此处查看文档http://developer.android.com/google/play/publishing/multiple-apks.html

可以使用多个APK支持。但对于这样(似乎是)微小的要求来说,这是一件大武器。

基本上,您可以使用<supports-screens>元素过滤清单文件中的目标设备,而不是定义android:screenOrientation。所以,你需要的是单独的APK分开设备。

答案 2 :(得分:0)

如果您想为活动设定固定方向,则可以在manifest.xml中使用

android:screenOrientation="portrait" or 
android:screenOrientation="landscape"

如果您不想修复它,那么您可以使用以下代码来获取屏幕尺寸

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;

因此

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

答案 3 :(得分:0)

以下是other post的答案:

这是使用resourcessize qualifiers的好方法。

将此bool资源放在res / values中作为bools.xml或其他任何内容(文件名在此处无关紧要):

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

将这个放在res / values-sw600dp和res / values-xlarge:

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

然后,在您的活动的onCreate方法中,您可以这样做:

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

在最小宽度方向上超过600 dp的设备,或在Android 3.2之前的设备(平板电脑,基本上)上的x-large将表现得像平常,based on sensor and user-locked rotation等。其他一切(电话,漂亮)很多)只会是肖像。