根据屏幕尺寸,Android Manifest有不同的方法吗?如果设备是平板电脑(即xlarge屏幕尺寸),我希望android:configChanges不包含“方向”
此外,我希望android:screenOrientation根据使用的设备而有所不同。有什么建议?
答案 0 :(得分:1)
我知道无法在AndroidManifest.xml中执行复杂的操作,但您可以通过Activity.setRequestedOrientation()
方法以编程方式执行此操作。将它包装在实用程序类中然后相应地查询您的环境很容易。但有一个警告 - 如果调用此方法确实会导致方向更改,则您的活动onCreate()
将再次被调用。如果你选择走这条路线,另一件事可能会派上用场,如果以下评估为真:
if((cfg.screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE) {...}
然后你在平板电脑设备上,或者至少你的布局是从layout-large(如果你有的话)加载的。将所有内容整合在一起,以下内容可将平板电脑锁定为横向模式,将手机锁定为纵向模式:
if ((cfg.screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE) {
return true;
} else if ((cfg.screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_NORMAL) {
return false;
} else if ((cfg.screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_SMALL) {
return false;
} else {
// Assume that all other ratings are tablets or possibly even larger devices; there is an
// extra large spec however it is only available OS versions 3.x and above so there is no clean way to query for this state.
return true;
}
答案 1 :(得分:0)
请看看这个 ......... 支持屏幕android:resizeable = [“true”| “false”] android:smallScreens = [“true”| “false”] android:normalScreens = [“true”| “false”] android:largeScreens = [“true”| “false”] android:xlargeScreens = [“true”| “false”] android:anyDensity = [“true”| “false”] android:requiresSmallestWidthDp =“integer”android:compatibleWidthLimitDp =“integer”android:largestWidthLimitDp =“integer ............... 这将是处理你的屏幕