今天偶然发现Activity
的 android:screenOrientation
还有behind
属性,本着不放过任何疑惑点的精神查看了一下文档:
android:screenOrientation="behind"
表示当前的Activity
和栈中在它下方的Activity
使用相同的方向。
好吧就是这么简单,干了这瓶成长快乐。。。
既然写到这儿了,就把android:screenOrientation
都有那些值都列出来吧:
Activity的方向可以是下面的任意值。
值 | 说 明 |
---|---|
“unspecified” | 默认值,由系统来选择方向,它的使用策略,以及由于选择时特定的上下文环境,可能会因为设备的差异而不同。 |
“behind” | 表示当前的Activity 和栈中在它下方的Activity 使用相同的方向。 |
“landscape” | 横向显示(宽度比高度要大)。 |
“portrait” | 纵向显示(高度比宽度要大)。 |
“reverseLandscape” | 与正常的横向方向相反显示,API level 9被引入。 |
“reversePortrait” | 与正常的纵向方向相反显示,API level 9被引入。 |
“sensorLandscape” | 横向显示,但是基于设备传感器,既可以正常横向显示也可以反向横向显示,API level 9被引入。 |
“sensorPortrait” | 纵向显示,但是基于设备传感器,既可以正常纵向显示也可以反向纵向显示,API level 9被引入。 |
“userLandscape” | 横向显示,但是基于设备传感器和用户偏好设置,如果用户锁定屏幕方向,这个行为和"landscape" 一样,否则就和sensorLandscape 行为一致,API level 18被引入。 |
“userPortrait” | 纵向显示,但是基于设备传感器和用户偏好设置,如果用户锁定屏幕方向,这个行为和"portrait" 一样,否则就和sensorPortrait 行为一致,API level 18被引入。 |
“sensor” | 显示的方向是由设备的方向传感器来决定的。显示方向依赖与用户怎样持有设备;当用户旋转设备时,显示的方向会改变。但是,默认情况下,有些设备不会在所有的四个方向上都旋转,因此要允许在所有的四个方向上都能旋转,就要使用"fullSensor" 属性值。 |
“fullSensor” | 允许屏幕有4个显示方向之外,其他与设置为"sensor" 时情况类似,不管什么样的设备,通常都会这么做(例如,某些设备通常不使用纵向倒转或横向反转,但是使用这个设置,就会发生这样的反转)。这个值在API level 9中引入。 |
“nosensor” | 屏幕的显示方向不会参照物理方向传感器。传感器会被忽略,所以显示不会因用户移动设备而旋转。除了这个差别之外,系统会使用与"unspecified" 设置相同的策略来旋转屏幕的方向。 |
“user” | 使用用户当前首选的方向。 |
“fullUser” | 如果用户锁定了屏幕方向,这个设置行为和"user" 完全一样,否则,它的行为和"fullSensor" 一样,允许在所有的四个方向上都能旋转,API level 18被引入。 |
“locked” | 锁定当前旋转的方向,无论是那个方向,API level 18被引入。 |
Note:当你给这个属性声明的值是
landscape
或portrait
的时候,要考虑硬件对activity运行的方向要求。正因如此,这些声明的值能够被诸如 Google Play 这样的服务所过滤,以便应用程序只能适用于那些支持Activity所要求的方向的设备。例如,如果声明了"landscape"
、"reverselandscape"
、或"sensorlandscape"
,那么应用程序就只能适用于那些支持横向显示的设备。但是,还应该使用<uses-feature>
元素来明确的声明应用程序所有的屏幕方向是纵向的还是横行的。例如:<uses-feature android:name=”android.hardware.screen.portrait”/>
。这个设置由 Google Play 提供的纯粹的过滤行为,并且在设备仅支持某个特定的方向时,Google Play 平台本身并不控制应用程序是否能够被安装。
好啦,Activity的所有方向设置都在这里了,Activity的方向都在你的把控之中。