方式一:配置清单文件
标签中设置:android:screenOrientation
Activity 在设备上的显示方向。如果 Activity 是在多窗口模式下运行,系统会忽略该属性。
其值可以是下列任一字符串:
值 | 释义 |
---|---|
“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 中的新增配置。 |
例如:android:screenOrientation="landscape"
横屏 android:screenOrientation="portrait"
竖屏
方式二:Java代码设置
/**
* 设置当前屏幕方向为横屏
*/
private void setHorizontalScreen(Activity activity) {
if (activity.getRequestedOrientation() != ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
}
/**
* 设置当前屏幕方向为竖屏
*/
private void setVerticalScreen(Activity activity) {
if (activity.getRequestedOrientation() != ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
}