3

我有一个支持所有 Android 设备的应用程序。

我想知道是否有可能,基于设备:

  • 如果设备是手机/平板手机,那么无论屏幕处于端口模式还是横向模式,应用程序都使用垂直布局
  • 如果设备是平板电脑,那么无论屏幕是处于端口模式还是横向模式,那么应用程序都使用横向布局

因此,应用程序在手机上显示为垂直(无论是横屏还是横屏),在平板电脑上是横屏(无论是竖屏还是横屏)

通过使用以下代码行,应用程序始终显示纵向。虽然它适用于移动设备,但不适用于平板电脑。

android:screenOrientation = "portrait"
android:configChanges="keyboard|keyboardHidden|orientation"

如果设备是手机/平板电脑,我想强制使用垂直设计的应用程序,如果设备是平板电脑,我想强制使用水平设计。

希望我的解释清楚。任何建议将不胜感激。谢谢。

4

2 回答 2

2

是的,您可以知道设备是否是平板电脑..

这是我的代码..

 if(isTablet(this))
    {
    setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);  
            }

如果设备是平板电脑,函数将返回 true

public static boolean isTablet(Context context) {
        return (context.getResources().getConfiguration().screenLayout
                & Configuration.SCREENLAYOUT_SIZE_MASK)
                >= Configuration.SCREENLAYOUT_SIZE_LARGE;   }
于 2013-09-27T07:36:50.793 回答
0

我认为您可以先尝试这种方式获取设备的屏幕尺寸

if ((getResources().getConfiguration().screenLayout &      Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE) {     
    Toast.makeText(this, "Large screen",Toast.LENGTH_LONG).show();

}
else if ((getResources().getConfiguration().screenLayout &      Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_NORMAL) {     
    Toast.makeText(this, "Normal sized screen" , Toast.LENGTH_LONG).show();

} 
else if ((getResources().getConfiguration().screenLayout &      Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_SMALL) {     
    Toast.makeText(this, "Small sized screen" , Toast.LENGTH_LONG).show();
}
else {
    Toast.makeText(this, "Screen size is neither large, normal or small" , Toast.LENGTH_LONG).show();
}

然后像这样设置方向

setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
于 2013-09-27T07:37:52.923 回答