Activity需要自己处理的配置项改变。当配置在运行时发生变化的时候,默认是Activity关闭并且重启,但是,声明了这个属性,Activity就不会重启。
<activity
android:name=".MainActivity"
android:configChanges="fontScale|orientation|keyboardHidden|locale|navigation|screenSize|uiMode"
android:screenOrientation="portrait" >
值 | 描述 |
---|---|
"mcc" | IMSI移动台的国家代码(MCC)发生变化——一个SIM被探测到并且更新MCC。 |
"mnc" | IMSI移动台的网络代码(MNC)发生变化——一个SIM被探测到并且更新MNC。 |
"locale" | 区域发生变化——用户选择了一个文本需要显示的新语言。 |
"touchscreen" | 触摸屏发生变化。(这个通常不会发生。) |
"keyboard" | 键盘类型发生变化——例如:用户插入了外接键盘。 |
"keyboardHidden" | 键盘的可访问性发生变化——例如:用户发现了硬件键盘。 |
"navigation" | 导航类型(轨迹球或dpad)发生变化。(通常不会发生。) |
"screenLayout" | 屏幕布局发生变化——这个会导致显示不同的Activity。 |
"fontScale" | 字体缩放因子发生变化——用户选择了新的字体大小。 |
"uiMode" | 当UI模式发生改变的时候——当用户放置设备到桌子或/汽车或夜间模式改变的时候可以引起UI模式变化。阅读UiModeManager。在API级别8时引入。 |
"orientation" | 屏幕方向发生变化——用户旋转了屏幕。注意:如果应用程序的目标API级别是13或更高(通过属性minSdkVersion和属性targetSdkVersion声明),你也需要声明配置项screenSize,因为这将在设备选择肖像和屏幕方向时发生改变。 |
"screenSize" | 当前可用屏幕大小发生变化。这代表一个当前可用大小的变化,和当前的比率相关,因此当用户选择不同的画面和图像,会发生变化。然而,如果你的程序目标API级别是12或更低,你的Activity总是会自己处理这个配置变化(这个变化不会引起Activity的重启,甚至在Android 3.2或更新的设备上)。在API级别13里加入的。 |
"smallestScreenSize" | 物理屏幕大小的变化。不管方向的变化,仅仅在实际物理屏幕打包变化的时候,如:外接显示器。这个配置项的变化引起在smallestWidth configuration里的变化。然而,如果你的程序目标API级别是12或更低,你的Activity将自己处理这个变化(这个变化不会引起Activity的重启,甚至在Android 3.2或更新的设备上)在API级别13里加入的。 |