Android横竖屏设置

1,509 阅读2分钟

一、在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:允许所有四个方向(横屏和竖屏的正反面)的自动旋转,完全由传感器控制。