[android] 03_Activity横竖屏切换

Android 4.0

Activity横竖屏切换 

横竖屏切换生命周期的控制

1、高版本4.0以上,Activity生命周期不会变化(三个)
    android:configChanges="orientation|keyboardHidden|screenSize"
 
2、低版本4.0一下, Activity生命周期不会变化(两个)
    android:configChanges="orientation|keyboardHidden"
 
3、横竖屏切换的时候 不会重新执行生命周期的方法, 界面仍然会变化
     android:screenOrientation="landscape"
     android:screenOrientation="portrait"
     横竖屏切换界面 不再变化.

默认情况下,当屏幕方向键盘显示隐藏 变化时都会销毁当前Activity,创建新的Activity。如果不希望重新创Activity实例,可以按如下配置Activity
<activity android:name=".MainActivity" android:configChanges="keyboardHidden|orientation">
上面的android:configChanges属性指定了要捕获屏幕方向键盘显示隐藏变化,当捕获到这些变化后会调用ActivityonConfigurationChanged()方法。
默认情况下(没有配置android:configChanges属性)
l竖屏切横屏,销毁当前Activity之后,创建一个新Activity实例。
l横屏切竖屏,销毁当前Activity之后,创建一个新Activity实例,新的Activity实例很快就被销毁,接着又会创建一个新Activity实例。如果只希望创建一个实例,可以配置android:configChanges="orientation"

1、AndroidManifest.xml中配置 
a) android:screenOrientation="landscape"  横屏显示 

b) android:screenOrientation="portrait" 竖屏显示
c) android:screenOrientation="sensor" 传感器,需要手机开启屏幕旋转功能

d) android:configChanges="orientation|keyboardHidden|screenSize"   
表示对屏幕方向,屏幕键盘隐藏,屏幕大小不敏感了
注意:Android2.3只需要
android:configChanges="orientation|keyboardHidden就可以了
而Android4.0以上,需要配置以上三个
android:configChanges="orientation|keyboardHidden|screenSize"  

样例:
<activity
    android:configChanges="orientation|keyboardHidden|screenSize"
    android:name="cn.zengfansheng.activityLifeCycle.MainActivity"
    android:label="@string/app_name" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>