打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Android:实时改变配置

Android通过终止、重启应用程序来重新加载资源文件,以做到对语言、区域和硬件实时变化的支持。

 

它的默认的行为不是总是方便和令人满意的,尤其当配置变化(如屏幕方向和键盘可视)、用户旋转设备或划出键盘等。你可以通过监测和响应定制你的应用程序来对这些变化作出响应。

 

为了能让Activity能监听实时的配置变化,需要在manifest节点里添加“android:configChanges”特性,指定你要处理的配置变化事件。

 

接下来的列表给出了你可以指定的配置变化的事件值:

 

? orientation                             屏幕在纵向和横向间旋转。

? keyboardHidden                    键盘显示或隐藏。

? fontScale                                 用户变更了首选的字体大小。

? locale                                       用户选择了不同的语言设定。

? keyboard                                 键盘类型变更,例如手机从12键盘切换到全键盘

? touchscreennavigation    键盘或导航方式变化,一般不会发生这样的事件。

 

你可以选择捕获多个事件,通过在各事件值间使用“|”。

 

接下来的代码片段显示了Activity要捕获屏幕方向和键盘可视的事件:

 


  1. <activity android:name=”.TodoList”  
  2.   
  3. android:label=”@string/app_name”  
  4.   
  5. android:theme=”@style/TodoTheme”  
  6.   
  7. android:configChanges=”orientation|keyboardHidden”/> 

 

增加这个特性就会强制应用程序在指定的配置变化时不用再重新启动,而是触发Activity中的onConfigurationChanged方法。如下面的代码片段所示,override这个方法去捕获配置变化,通过传入的Configuration 对象的值进行合适的处理。需要提醒的是需要调用父类的方法,并且要重新加载Activity使用的资源,以防有变更。

 


  1. @Override  
  2.   
  3. public void onConfigurationChanged(Configuration _newConfig) {  
  4.   
  5. super.onConfigurationChanged(_newConfig);  
  6.   
  7.    
  8.   
  9. [ ... 基 于资源值更新UI ... ]  
  10.   
  11.    
  12.   
  13. if (_newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {  
  14.   
  15. [ ... 对 不同的屏幕方向作出处理 ... ]  
  16.   
  17. }  
  18.   
  19.    
  20.   
  21. if (_newConfig.keyboardHidden == Configuration.KEYBOARDHIDDEN_NO) {  
  22.   
  23. [ ... 对 键盘可见作出处理 ... ]  
  24.   
  25. }  
  26.   

 

当onConfigurationChanged 被调用时,Activity的资源变量都已经用新的值进行了更新,所以它们是安全的。

 

任何你没有显式指明的配置变化事件,都将由应用程序捕获,而且仍然会引起应用程序的重启,而不会调用onConfigurationChanged 方法。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
onConfigurationChanged方法介绍及问题解决
Android横竖屏切换小结
Android禁止屏幕旋转,旋转屏幕时不重新加载当前activity
android中按电源键锁屏然后解锁导致Activity调用onDestory以及如何防止锁屏 翻转屏幕也会触发的情况
3.6 响应系统设置的事件(Configuration类)
Android横屏竖屏切换总结
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服