Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:根据设备屏幕大小改变方向和选项_Android_Manifest_Tablet_Screen Size - Fatal编程技术网

Android:根据设备屏幕大小改变方向和选项

Android:根据设备屏幕大小改变方向和选项,android,manifest,tablet,screen-size,Android,Manifest,Tablet,Screen Size,有没有办法让Android清单根据屏幕大小而有所不同?我希望android:configChanges在设备为平板电脑时不包含“方向”(即xlarge屏幕大小) 此外,我希望android:screenOrientation根据所使用的设备而有所不同。有什么建议吗 我不知道如何在AndroidManifest.xml中完成如此复杂的事情,但是您可以通过Activity.setRequestedOrientation()方法以编程方式完成。将其封装在一个实用程序类中,然后相应地查询您的环境是很容易

有没有办法让Android清单根据屏幕大小而有所不同?我希望android:configChanges在设备为平板电脑时不包含“方向”(即xlarge屏幕大小)


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

我不知道如何在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;
      }

请看看这个 ......... 支持屏幕android:resizeable=[“true”|“false”]android:smallScreens=[“true”|“false”]android:normalScreens=[“true”|“false”]android:xlargeScreens=[“true”|“false”]android:anyDensity=[“true”|“false”]android:requiresSmallestWidthDp=“integer”android:compatibleWidthLimitDp=“integer”android:largestWidthLimitDp=“整数 ............... 它将处理您的屏幕