Android Orientation Lock

时间:2015-03-11 09:08:29

标签: android android-layout android-intent android-activity android-orientation

我的Android项目有一个小要求。

  1. 我的应用程序应在平板电脑中运行横向,在电话
  2. 纵向
  3. 有没有办法在Application中锁定方向,而不是在Activity中设置。

3 个答案:

答案 0 :(得分:1)

您可以按照以下代码检查屏幕尺寸:

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

比设定方向:

this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

答案 1 :(得分:1)

为避免计算屏幕尺寸,您可以改为使用尺寸为

的布尔值 values-sw600dp/bools.xml -> <bool name="isTablet">true</bool>

中的

values-sw720dp/bools.xml -> <bool name="isTablet">true</bool>

和简单的values/bools -> <bool name="isTablet">false</bool>

然后在活动中你可以简单地设置

boolean isTablet = getResources().getBoolean(R.bool.isTablet);
        if (isTablet) {
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        } else {
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        }
        super.onCreate(savedInstanceState);

请注意,这仅适用于API level 3.2及更高版本。

答案 2 :(得分:0)

if (getResources().getDisplayMetrics().widthPixels > getResources().getDisplayMetrics().heightPixels)
    {
        bLandscape = true;
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        //initViews_Land();
    }
    else
    {
        bLandscape = false;
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        //initViews_Port();
    }

一种方法是使用此代码是您的每个活动。

  

另一种方法是为手机和平板电脑创建两个不同的项目。上传两个APK(平板电脑APK必须具有更高版本号)并在高级模式下激活它们。 Play商店会根据正在安装的设备自动管理

电话清单:所有活动必须有android:screenOrientation =“sensorPortrait”

...
<compatible-screens>
    <screen
        android:screenDensity="ldpi"
        android:screenSize="small" />
    <screen
        android:screenDensity="mdpi"
        android:screenSize="small" />
    <screen
        android:screenDensity="mdpi"
        android:screenSize="normal" />
    <screen
        android:screenDensity="hdpi"
        android:screenSize="normal" />
    <screen
        android:screenDensity="mdpi"
        android:screenSize="large" />
    <screen
        android:screenDensity="hdpi"
        android:screenSize="large" />
</compatible-screens>

<supports-screens
    android:anyDensity="true"
    android:largeScreens="true"
    android:normalScreens="true"
    android:resizeable="true"
    android:smallScreens="true"
    android:xlargeScreens="false" />
...

平板电脑清单:所有活动必须有android:screenOrientation =“sensorLandscape”

...
<compatible-screens>
    <screen
        android:screenDensity="xhdpi"
        android:screenSize="large" />
    <screen
        android:screenDensity="xhdpi"
        android:screenSize="xlarge" />
    <screen
        android:screenDensity="hdpi"
        android:screenSize="xlarge" />
    <screen
        android:screenDensity="mdpi"
        android:screenSize="xlarge" />
</compatible-screens>

<supports-screens
    android:anyDensity="true"
    android:largeScreens="false"
    android:normalScreens="false"
    android:resizeable="false"
    android:smallScreens="false"
    android:xlargeScreens="true" />
...
希望它可以提供帮助