免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1667 | 回复: 0
打印 上一主题 下一主题

Android:实时改变配置 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-08-08 13:30 |只看该作者 |倒序浏览
Android:实时改变配置



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


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


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


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


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

❑ keyboardHidden
键盘显示或隐藏。

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

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

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

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


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


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


Java代码

  1. 01.<activity android:name=”.TodoList”  

  2. 02.  

  3. 03.android:label=”@string/app_name”  

  4. 04.  

  5. 05.android:theme=”@style/TodoTheme”  

  6. 06.  

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


Java代码

  1. 01.@Override  

  2. 02.  

  3. 03.public void onConfigurationChanged(Configuration _newConfig) {  

  4. 04.  

  5. 05.super.onConfigurationChanged(_newConfig);  

  6. 06.  

  7. 07.   

  8. 08.  

  9. 09.[ ... 基于资源值更新UI ... ]  

  10. 10.  

  11. 11.   

  12. 12.  

  13. 13.if (_newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {  

  14. 14.  

  15. 15.[ ... 对不同的屏幕方向作出处理 ... ]  

  16. 16.  

  17. 17.}  

  18. 18.  

  19. 19.   

  20. 20.  

  21. 21.if (_newConfig.keyboardHidden == Configuration.KEYBOARDHIDDEN_NO) {  

  22. 22.  

  23. 23.[ ... 对键盘可见作出处理 ... ]  

  24. 24.  

  25. 25.}  

  26. 26.  

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


任何你没有显式指明的配置变化事件,都将由应用程序捕获,而且仍然会引起应用程序的重启,而不会调用onConfigurationChanged 方法。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP