android:screenOrientation的说明 屏幕显示方向

Activity在屏幕当中显示的方向。属性值可以是下表中列出的一个值:

属性 说明
unspecified 默认值,由系统来选择方向。它的使用策略,以及由于选择时特定的上下文环境,可能会因为设备的差异而不同。
user 使用用户当前首选的方向。
behind 使用Activity堆栈中与该Activity之下的那个Activity的相同的方向。
landscape 横向显示(宽度比高度要大)
portrait 纵向显示(高度比宽度要大)
reverseLandscape 与正常的横向方向相反显示,在API Level 9中被引入。
reversePortrait 与正常的纵向方向相反显示,在API Level 9中被引入。
sensorLandscape 横向显示,但是基于设备传感器,既可以是按正常方向显示,也可以反向显示,在API Level 9中被引入。
sensorPortrait 纵向显示,但是基于设备传感器,既可以是按正常方向显示,也可以反向显示,在API Level 9中被引入。
sensor 显示的方向是由设备的方向传感器来决定的。显示方向依赖与用户怎样持有设备;当用户旋转设备时,显示的方向会改变。但是,默认情况下,有些设备不会在所有的四个方向上都旋转,因此要允许在所有的四个方向上都能旋转,就要使用fullSensor属性值。
fullSensor 显示的方向(4个方向)是由设备的方向传感器来决定的,除了它允许屏幕有4个显示方向之外,其他与设置为“sensor”时情况类似,不管什么样的设备,通常都会这么做。例如,某些设备通常不使用纵向倒转或横向反转,但是使用这个设置,还是会发生这样的反转。这个值在API Level 9中引入。
nosensor 屏幕的显示方向不会参照物理方向传感器。传感器会被忽略,所以显示不会因用户移动设备而旋转。除了这个差别之外,系统会使用与“unspecified”设置相同的策略来旋转屏幕的方向。

  • 注意:在给这个属性设置的值是“landscape”或portrait的时候,要考虑硬件对Activity运行的方向要求。正因如此,这些声明的值能够被诸如Google Play这样的服务所过滤,以便应用程序只能适用于那些支持Activity所要求的方向的设备。例如,如果声明了“landscape”、“reverseLandscape”、或“sensorLandscape”,那么应用程序就只能适用于那些支持横向显示的设备。但是,还应该使用元素来明确的声明应用程序所有的屏幕方向是纵向的还是横行的。例如:。这个设置由Google Play提供的纯粹的过滤行为,并且在设备仅支持某个特定的方向时,平台本身并不控制应用程序是否能够被按照。
  • 以上配置值会反映在Activity.getRequestedOrientation()方法的返回值中,与之对应的setRequestedOrientation()方法可以通过API的方式动态改变该属性的值。
  • 如果设置的方向为:基于设备传感器,那么有时候手机长时间使用,软件冲突….原因可能导致自动旋转失灵,这时候手动设传感器的监听可以解决这一系列问题,具体可以这样设置
  • 注意:当屏幕发生旋转的时候,activity会重走生命周期,但是如果不希望重走生命周期,那么可以设置android:configChanges=”orientation|screenSize|keyboardHidden”,这样当屏幕发生旋转的时候便是回调onConfigurationChanged()函数。
例如:
...
            android:name="xxx"
            android:configChanges="orientation|screenSize|keyboardHidden"
            android:screenOrientation="fullSensor"
            ...
 />

推荐

android 葵花宝典

你可能感兴趣的:(andorid)