Android:根据设备的屏幕大小更改方向更改选项

时间:2012-08-21 16:38:40

标签: android manifest tablet screen-size

根据屏幕尺寸,Android Manifest有不同的方法吗?如果设备是平板电脑(即xlarge屏幕尺寸),我希望android:configChanges不包含“方向”

此外,我希望android:screenOrientation根据使用的设备而有所不同。有什么建议?

2 个答案:

答案 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 ............... 这将是处理你的屏幕