如何将平板电脑的清单中的方向设置为手机的横向和纵向?
我想:
<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"
....
在一个清单中。有可能吗?
答案 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);