如何在平板电脑的清单中设置方向作为手机的风景和肖像?

时间:2014-09-10 09:35:51

标签: android

如何将平板电脑的清单中的方向设置为手机的横向和纵向?

我想:

    <application 
            android:name=".App"
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:installLocation="preferExternal"
            android:label="@string/app_name"
            android:largeHeap="true"

            <!--for phones-->
            android:screenOrientation="portrait"
            <!--for tablets-->
            android:screenOrientation="landscape"
....

在一个清单中。有可能吗?

2 个答案:

答案 0 :(得分:7)

不,这是不可能的,你必须在运行时检查它。

通过以下方式检查它是否是平板电脑:

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

然后在你的Activity中,在 setContentView()

之前设置这样的方向
if(isTablet(this))
{
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
}
else
{
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
}

答案 1 :(得分:1)

您可以通过调用以下方法在运行时进行检查:

boolean isTablet(Context context) {
        boolean isTablet = false;
        DisplayMetrics metrics = context.getApplicationContext().getResources()
                .getDisplayMetrics();
        Display display = ((WindowManager) context.getSystemService("window"))
                .getDefaultDisplay();
        int width = display.getWidth();
        int height = display.getHeight();

        float density = metrics.density;
        if ((width / density >= 600.0F) && (height / density >= 600.0F))
            isTablet = true;
        else {
            isTablet = false;
        }

        return isTablet;
    }

您可以通过调用onCreate方法

按方向进行设置
if(isTablet(this)
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
 else
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);