手机纵向模式和平板电脑纵向+横向

Portrait mode for Phones and Portrait+Landscape for Tablets

我正在构建一个通用 android 应用程序,其中 phone 需要仅支持纵向,而平板电脑将同时支持纵向和横向。这是我的布局结构

布局端口 布局-sw600dp-端口 布局-sw600dp-land

但如果 phone 处于横向模式,应用程序会崩溃,原因是找不到资源异常。

这种方式应该 work:Define values-sw600dp boolean.xml 文件中的布尔值。

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

在常规值文件夹中定义类似的文件并将值更改为 false:

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

将其放入您的 onCreate 中:

boolean tablet = getResources().getBoolean(R.bool.tablet);
if (!tablet) 
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);

您好,您可以像这样在 activity 中以编程方式设置您的方向

if(isTable()){
    setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}else{
    setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}

哪里isTablet()方法

public static boolean isTablet(Context context) {

    return (context.getResources().getConfiguration().screenLayout
            & Configuration.SCREENLAYOUT_SIZE_MASK)
            >= Configuration.SCREENLAYOUT_SIZE_LARGE;

}// isTablet