系统配置变更的处理机制
为了避免横竖屏切换时重新加载界面的情况,Android设计了一中配置变更机制,在指定的环境配置发生变更之时,无需重启活动页面,只需执行特定的变更行为。该机制的视线过程分为两步:
- 修改 AndroidManifest.xml,给 activity 节点增加 android.configChanges 属性
- 修改活动页面的Java代码,重写活动的 onConfigurationChanged 方法,补充对应的代码处理逻辑。
java
// 在配置项变更时触发。比如屏幕方向发生变更等
@Override
public void onConfigurationChanged(@NonNull Configuration newConfig) {
super.onConfigurationChanged(newConfig);
switch (newConfig.orientation) {
case Configuration.ORIENTATION_PORTRAIT:
tv_monitor.setText("当前屏幕方向为:竖屏");
break;
case Configuration.ORIENTATION_LANDSCAPE:
tv_monitor.setText("当前屏幕方向为:横屏");
break;
default:
break;
}
}
xml
<activity
android:name=".ChangeDirectionActivity"
android:configChanges="orientation|screenLayout|screenSize"
android:exported="true">
- 配置变更的豁免情况
当是这些值发生变化的时候,Activity不会重新再创建
锁定屏幕方向
- screenOrientation
landscape :横屏
portrait:竖屏
xml
<activity
android:name=".ChangeDirectionActivity"
android:configChanges="orientation|screenLayout|screenSize"
android:screenOrientation="landscape"
android:exported="true">