一、在AndroidManifest.xml中设置
<activity
android:name=".YourActivity"
android:screenOrientation="这里设置横竖屏">
</activity>
screenOrientation属性说明:
- unspecified (默认值):让系统决定Activity的显示方向,通常根据设备的物理方向和用户的偏好来自动切换横竖屏。
- portrait:强制Activity以竖屏(高度大于宽度)显示,不随设备旋转而改变。
- landscape:强制Activity以横屏(宽度大于高度)显示,同样不随设备旋转而改变。
- user:使用用户当前设置的首选方向显示Activity。
- behind:使Activity的方向与启动它的Activity(在Activity堆栈中的上一个Activity)的方向相同。
- sensor:根据物理传感器的方向自动旋转Activity,即当用户旋转设备时,Activity的显示方向会随之改变。
- nosensor:忽略物理传感器,无论设备如何旋转,Activity的显示方向都不会改变(除非用户手动更改,或者有其他逻辑控制方向)。
- sensorLandscape:允许Activity在横屏的两个方向(左横屏和右横屏)之间自动旋转,忽略竖屏。
- sensorPortrait:类似地,允许Activity在竖屏的两个方向之间自动旋转,忽略横屏。
- fullSensor:显示的方向(包括横屏和竖屏的四个方向)完全由设备的方向传感器决定,允许所有四个方向的旋转。
二、通过代码动态设置
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_your_activity);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
ActivityInfo常量的含义:
- SCREEN_ORIENTATION_UNSPECIFIED:默认值,表示系统可以根据设备当前的方向和传感器来决定Activity的显示方向。
- SCREEN_ORIENTATION_LANDSCAPE:强制Activity以横屏(宽度大于高度)显示,即屏幕方向固定为横向。
- SCREEN_ORIENTATION_PORTRAIT:强制Activity以竖屏(高度大于宽度)显示,即屏幕方向固定为纵向。
- SCREEN_ORIENTATION_USER:使用用户当前设置的首选方向显示Activity,即遵循系统的默认方向设置。
- SCREEN_ORIENTATION_BEHIND:使Activity的方向与启动它的那个Activity(在返回栈中的上一个Activity)的方向相同。
- SCREEN_ORIENTATION_SENSOR:根据物理传感器的方向自动旋转Activity,设备旋转时Activity界面也会跟着旋转。
- SCREEN_ORIENTATION_NOSENSOR:忽略物理传感器,屏幕方向不会因设备移动而改变,仅根据用户设置或代码指定的方向。
- SCREEN_ORIENTATION_SENSOR_LANDSCAPE:允许Activity在横屏的两个方向(左侧横屏和右侧横屏)之间自动旋转,忽略竖屏。
- SCREEN_ORIENTATION_SENSOR_PORTRAIT:允许Activity在竖屏的两个方向(正常竖屏和倒置竖屏)之间自动旋转,忽略横屏。
- SCREEN_ORIENTATION_FULL_SENSOR:允许所有四个方向(横屏和竖屏的正反面)的自动旋转,完全由传感器控制。