我希望平板电脑能够以纵向和横向显示(sw600dp 或更高),但手机仅限于纵向显示。我找不到任何有条件地选择方向的方法。有什么建议么?
这是使用资源和大小限定符的好方法。
将此 bool 资源作为 bools.xml 或其他任何内容放在 res/values 中(文件名在这里无关紧要):
<?xml version="1.0" encoding="utf-8"?> <resources> <bool name="portrait_only">true</bool> </resources>
把这个放在 res/values-sw600dp 和 res/values-xlarge 中:
<?xml version="1.0" encoding="utf-8"?> <resources> <bool name="portrait_only">false</bool> </resources>
有关在 Android Studio中添加这些目录和文件的帮助,请参阅此补充答案。
您可以在 Android Studio 中执行以下步骤来添加res/values-sw600dp和res/values-large目录及其bools.xml文件。
res/values-sw600dp
res/values-large
bools.xml
首先,从 Project 选项卡中选择导航器中的 Project(而不是 Android)过滤器。
然后右键单击该app/src/main/res目录。选择新建> Android 资源目录。
app/src/main/res
选择最小屏幕宽度,然后按>>按钮。
输入600最小的屏幕宽度。目录名会自动生成。说OK。
600
然后右键单击新创建的values-sw600dp文件。选择新建>值资源文件。键入bools名称。
values-sw600dp
bools
values-large仅当您支持 Android 3.2(API 级别 13)之前的版本时,才需要添加目录。否则你可以跳过这一步。该values-large目录对应于values-sw600dp. (values-xlarge对应于values-sw720dp。)
values-large
values-xlarge
values-sw720dp
要创建values-large目录,请遵循与上述相同的步骤,但在这种情况下,请选择“大小”而不是“最小屏幕宽度”。选择大。目录名会自动生成。
像以前一样右键单击目录以创建bools.xml文件。
然后,在您的活动的 onCreate 方法中,您可以执行以下操作:
if(getResources().getBoolean(R.bool.portrait_only)){ setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); }
在最小宽度方向上超过 600 dp 或在 Android 3.2 之前的设备(基本上是平板电脑)上超过 600 dp 的设备将表现得像正常一样,基于传感器和用户锁定的旋转等。其他一切(手机,几乎)将只是肖像。