android横竖屏切换布局闪退,Android-Activity横竖屏切换不杀死Activity 并监听横竖屏切换...

在上一篇博客,Android-Activity临时数据的保存,中讲解到,当发生横竖屏切换的时候,系统会杀死Activity并重新启动Activity

系统会杀死Activity

12-12 08:11:50.441 3347-3347/liudeli.activity D/TempDataActivity: onPause

12-12 08:11:50.441 3347-3347/liudeli.activity D/TempDataActivity: onStop

12-12 08:11:50.441 3347-3347/liudeli.activity D/TempDataActivity: onDestroy

并重新启动Activity

12-12 08:11:50.460 3347-3347/liudeli.activity D/TempDataActivity: onCreate 上次看到了223页

12-12 08:11:50.460 3347-3347/liudeli.activity D/TempDataActivity: onCreate

12-12 08:11:50.460 3347-3347/liudeli.activity D/TempDataActivity: onStart

12-12 08:11:50.460 3347-3347/liudeli.activity D/TempDataActivity: onRestoreInstanceState 上次看到了223页

12-12 08:11:50.460 3347-3347/liudeli.activity D/TempDataActivity: onResume

当横竖屏切换的时候,系统会杀死Activity并重新启动Activity,这是不合理的,但是安卓系统默认就是这样设计的

解决Activity横竖屏切换不杀死Activity 不重新启动Activity,只需在Activity节点中添加 android:configChanges="orientation|keyboardHidden|screenSize" 即可

监听横竖屏切换,为什么要监听横竖屏切换呢,因为有这样的需求:竖屏显示界面 和 横屏显示界面不一样

需要在Activity重写以下方法,即可监听横竖屏切换:

/*** 需要在Activity节点设置android:configChanges="orientation|keyboardHidden|screenSize"

* 横竖屏切换才会调用此方法,进行监听

*@paramnewConfig*/@Overridepublic voidonConfigurationChanged(Configuration newConfig) {super.onConfigurationChanged(newConfig);//获取到屏幕的方向

int orientation =newConfig.orientation;switch(orientation) {//横屏

caseConfiguration.ORIENTATION_LANDSCAPE:

setContentView(R.layout.activity_temp_data_horizontal);break;//竖屏

caseConfiguration.ORIENTATION_PORTRAIT:

setContentView(R.layout.activity_temp_data);break;

}

}

activity_temp_data.xml (横屏需要的布局文件)

/>

activity_temp_data_horizontal.xml (竖屏需要的布局文件)

/>

效果:

7756a6e132bdd9ff72b337309521533f.gif

在开发中,如果需求没有明确要指定 横屏 或 竖屏,可以直接把屏幕方向定死为 竖屏  android:screenOrientation="portrait",这样可以减少很多不必要带来的麻烦和Bug

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值