AndroidManifest清单文件中,Activity的screenOrientation属性详解
screenOrientation是用于控制Acivity的屏幕方向的属性,他的参数有16个,下面介绍一个各个参数的功能(部分属性容易混淆,于是我建了16个Activity分别测试了在系统旋转打开和关闭情况下的测试,整理如下)
参数 | 值 | 功能 | 自动旋转打开 | 自动旋转关闭 |
---|---|---|---|---|
unspecified | -1 | 让系统决定Activity的方向,由传感器和系统设置共同决定 | 四个方向 | 不旋转 |
landscape | 0 | 强制为横屏,忽略传感器和系统设置 | 不旋转 | 不旋转 |
portrait | 1 | 强制为竖屏,忽略传感器和系统设置 | 不旋转 | 不旋转 |
user | 2 | 使用用户当前的首选方向 | 四个方向 | 不旋转 |
behind | 3 | 与Activity堆下的Activity方向相同 | 四个方向 | 不旋转 |
sensor | 4 | 根据传感器来决定方向,忽略系统设置 | 四个方向 | 四个方向 |
nosensor | 5 | 忽略系统设置,忽略传感器 | 不旋转 | 不旋转 |
sensorLandscape | 6 | 默认使用横屏,忽略系统设置,但是可以响应传感器的操作 | 横屏的两个方向 | 横屏的两个方向 |
sensorPortrait | 7 | 默认使用竖屏,忽略系统设置,但是可以响应传感器的操作 | 竖屏两个方向 | 竖屏两个方向 |
reverseLandscape | 8 | 默认使用横屏,与默认横屏翻转180度的方向 | 只能使用翻转的横屏 | 只能使用翻转的横屏 |
reversePortrait | 9 | 默认使用竖屏,与默认竖屏翻转180度的方向 | 只能使用翻转的竖屏方向 | 只能使用翻转的竖屏方向 |
fullSensor | 10 | 由传感器决定,能旋转为任意方向(sensor只能旋转默认横竖屏) | 四个方向 | 四个方向 |
userLandscape | 11 | 默认横屏,但是能够根据传感器旋转到任意横屏方向 | 横屏的两个方向 | 默认的横屏方向 |
userPortrait | 12 | 默认竖屏,但是能够根据传感器旋转到任意竖屏方向 | 竖屏的两个方向 | 默认的竖屏方向 |
fullUser | 13 | 允许使用用户的任意方向 | 四个方向 | 不旋转 |
locked | 14 | 锁定为当前方向 | 不旋转 | 不旋转 |
已经列出了所有的情况,由表可知16个参数完全能满足所有的旋转需求.
测试代码地址 ScreenOrientation
landscape:限制界面为横屏,旋转屏幕也不会改变当前状态。
portrait:限制界面为竖屏,旋转屏幕也不会改变当前状态。
sensor:根据传感器定位方向,旋转手机90度,180,270,360,界面都会发生变化。
sensorLandscape:(横屏的旋转,不会出现竖屏的现象)根据传感器定位方向,旋转手机180度界面旋转。一般横屏游戏会是这个属性。
sensorPortrait:(竖屏的旋转,不会出现横屏的现象)根据传感器定位方向,旋转手机180度界面会旋转。
unspecified:由系统选择显示方向,不同的设备可能会有所不同。(旋转手机,界面会跟着旋转)
user:用户当前的首选方向。
nosensor:不由传感器确定方向。旋转设备的时候,界面不会跟着旋转。初始界面方向由系统提供。