通常在代码里可以直接设置屏幕的方向,大致如下:
设置为横屏:
private void setHorizontalScreen(Activity activity) {if (activity.getRequestedOrientation() != ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) {activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);}}
ActivityInfo查阅表
参数 | 功能 |
---|---|
SCREEN_ORIENTATION_BEHIND | 继承Activity堆栈中当前Activity下面的那个Activity的方向 |
SCREEN_ORIENTATION_FULL_SENSOR | 由重力传感器决定0/90/180/270° |
SCREEN_ORIENTATION_LANDSCAPE | 始终横屏 |
SCREEN_ORIENTATION_PORTRAIT | 始终竖屏 |
SCREEN_ORIENTATION_LOCKED | 锁定屏幕方向 |
SCREEN_ORIENTATION_NOSENSOR | 关闭重力传感器对横/竖屏的影响 |
SCREEN_ORIENTATION_REVERSE_LANDSCAPE | 另一个方向的横屏 |
SCREEN_ORIENTATION_REVERSE_PORTRAIT | 另一个方向的竖屏 |
SCREEN_ORIENTATION_SENSOR | 重力传感器影响屏幕的方向0/90/270° |
SCREEN_ORIENTATION_SENSOR_LANDSCAPE | 始终横屏,由重力传感器决定是哪个方向的横屏 |
SCREEN_ORIENTATION_SENSOR_PORTRAIT | 始终竖屏,由重力传感器决定是哪个方向的竖屏 |
SCREEN_ORIENTATION_UNSPECIFIED | 不指定方向,使用默认方向 |
SCREEN_ORIENTATION_USER | 由用户和重力传感器共同决定,详见文本末端 |
SCREEN_ORIENTATION_USER_LANDSCAPE | 用户和重力传感器共同决定是哪个方向的横屏 |
SCREEN_ORIENTATION_USER_PORTRAIT | 用户和重力传感器共同决定是哪个方向的竖屏 |
UIOPTION_SPLIT_ACTION_BAR_WHEN_NARROW | 当屏幕较窄时导航栏有一部分会显示在底部 |
除了代码,还可以在标签android:screenOrientationActivity 中设置显示方向。
设置为横屏:
<activity android:name=\".MainActivity\" android:screenOrientation=\"landscape\">
注意:如果 Activity 是在多窗口模式下运行,系统会忽略该属性。
screenOrientation查阅表
值 | 含义 |
---|---|
unspecified | 默认值。由系统选择方向。在不同设备上,系统使用的政策以及基于政策在特定上下文所做的选择可能有所差异。 |
behind | 与 Activity 栈中紧接着它的 Activity 的方向相同。 |
landscape | 横向方向(显示的宽度大于高度)。 |
portrait | 纵向方向(显示的高度大于宽度)。 |
reverseLandscape | 与正常横向方向相反的横向方向。API 级别 9 中的新增配置。 |
reversePortrait | 与正常纵向方向相反的纵向方向。API 级别 9 中的新增配置。 |
sensorLandscape | 横向方向,但根据设备传感器,可以是正常或反向的横向方向。API 级别 9 中的新增配置。 |
sensorPortrait | 纵向方向,但根据设备传感器,可以是正常或反向的纵向方向。API 级别 9 中的新增配置。 |
userLandscape | 横向方向,但根据设备传感器和用户的传感器首选项,可以是正常或反向的横向方向。 如果用户锁定了基于传感器的旋转,其行为与 landscape 相同,否则,其行为与 sensorLandscape 相同。API 级别 18 中的新增配置。 |
userPortrait | 纵向方向,但根据设备传感器和用户的传感器首选项,可以是正常或反向的纵向方向。 如果用户锁定了基于传感器的旋转,其行为与 portrait 相同,否则,其行为与 sensorPortrait 相同。API 级别 18 中的新增配置。 |
sensor | 方向由设备方向传感器决定。显示方向取决于用户如何手持设备,它会在用户旋转设备时发生变化。 但一些设备默认情况下不会旋转到所有四种可能的方向。要允许全部四种方向,请使用 “fullSensor”。 |
fullSensor | 方向由 4 种方向中任一方向的设备方向传感器决定。这与 “sensor” 类似,不同的是它允许所有 4 种可能的屏幕方向,无论设备正常情况下采用什么方向(例如,一些设备正常情况下不使用反向纵向或反向横向,但它支持这些方向)。 API 级别 9 中的新增配置。 |
nosensor | 决定方向时不考虑物理方向传感器。传感器会被忽略,因此显示不会随用户对设备的移动而旋转。 除了这个区别,系统在选择方向时使用的政策与“unspecified”设置相同。 |
user | 用户当前的首选方向。 |
fullUser | 如果用户锁定了基于传感器的旋转,其行为与 user 相同,否则,其行为与 fullSensor 相同,允许所有 4 种可能的屏幕方向。 API 级别 18 中的新增配置。 |
locked | 将方向锁定在其当前的任意旋转方向。API 级别 18 中的新增配置。 |
———转载请附上本文链接———
多多交流相互学习