`

Android:实时改变配置

阅读更多

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

 

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

 

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

 

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

 

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

 keyboardHidden                    键盘显示或隐藏。

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

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

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

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

 

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

 

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

 

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

 

 

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

 

Java代码 
  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.   
  27. }  

 

 

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

 

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

 

分享到:
评论

相关推荐

    Android UI组件实例集合

    )当那个发 生的时候,我们会提供透明的接口来直接呼叫Google的实现方法,而你已有的程序可以直接使用Google的新功能而不需要改变任何东西。而且,由于你 的程序在设计初期就是已经支持intents的了,当Google的...

    Google Android SDK开发范例大全(完整版)

    任何时候都不要直接编辑这个文件,因为它随着每次构建而改变。 运行该应用程序可以看到一个白色屏幕,其中有黑色文本。 图 6. flashlight 的白色屏幕 下面显示用于 FlashLight 应用程序的 AndroidManifest.xml...

    android 开发改变.avd的路径

    通过此文档,你可以清楚的知道如何改变.avd 的路径!

    ZoomControls 缩放

    1:首先在布局文件中配置ZoomControls控件 android:id="@+id/zoomcontrols" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom" /&gt; 2:具体实现在...

    Android ThinkAndroid开发框架.zip

    缓存模块:通过简单的配置及设计可以很好的实现缓存,对缓存可以随意的配置 图片缓存模块:imageview加载图片的时候无需考虑图片加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象。 配置器模块:...

    android中通过百度定位sdk实时计算移动距离

    大概思路: 1)创建项目,上传应用到百度定位sdk获得应用对应key...5)在service的定位代码块中计算距离,并将距离和经纬度实时的保存在数据库(注:只要经纬度发生改变,计算出来的距离就要进行保存) 6)界面的刷新显示

    Android Studio使用Kotlin时,修改代码后运行不生效的解决方法

    前段时间升级 Android Studio 3.1.3+ 版本后,决定尝试使用 Kotlin 做 APP 开发看看。结果却发现,修改 String 资源后,“运行”,修改的内容没有生效。一开始以为只是 String 资源是这样,于是试了下 kt 文件,结果...

    新版Android开发教程.rar

    � A ndroid 在设计初期就考虑了与现其有业务的融合,改变以往从计算机为主改成从手机使用为导向。新 生应用如:G oogle 地图及其衍生应用、 GMail 、 GTalk 等。 � GPS 卫星导航功能,手机照相, MP3 ,蓝芽等均...

    Android 常用六大框架

    (10) 网络状态检测模块:当网络状态改变时,对其进行检 6、LoonAndroid 项目地址:https://github.com/gdpancheng/LoonAndroid 主要有以下模块: (1) 自动注入框架(只需要继承框架内的application既可) (2) ...

    Android APP使用自定义字体实现方法

    android 系统本身内置了一些字体,可以在程序中使用,并且支持在xml配置textView的时候进行修改字体的样式。支持字段为android:textStyle ,android:typeface, android:fontFamily,系统内置了normal|bold|italic三种...

    QTabLayout:TabLayout指示线过渡动画,Tab逐渐颜色改变

    QTabLayout ...三、实现Tab逐渐改变颜色。 使用 一、在app目录的build.gradle中增加配置 gradle dependencies { implementation 'com.github.qiaoyhh:QTabLayout:1.0' } 二、XML文件中使用 &lt;...

    Android实例代码

    5.2、Intent的属性及intent-filter配置:Component属性; Action、Category属性与intent-filter配置; Data、Type属性与intent-filter配置; Extra属性; 5.3、使用Intent创建Tab页面: 第6章、Android应用的资源 ...

    android开发秘籍

    12.1.1 秘诀99:设置运行配置 255 12.1.2 秘诀100:使用ddms 256 12.1.3 秘诀101:断点调试 257 12.2 android sdk 中的调试工具 258 12.2.1 秘诀102:使用android debug bridge 工具 258 12.2.2 秘诀103:使用...

    android 系统中的几乎所有广播接收者

    CONFIGURATION_CHANGED_ACTION 设备的配置信息已经改变,参见 Resources.Configuration. "android.intent.action.CONFIGURATION_CHANGED" Creator CREATOR 无 无 DATA_ACTIVITY_STATE_CHANGED_ACTION 电话的数据活动...

    疯狂Android讲义(第2版)源代码 第6章~第9章

    5.2、Intent的属性及intent-filter配置:Component属性; Action、Category属性与intent-filter配置; Data、Type属性与intent-filter配置; Extra属性; 5.3、使用Intent创建Tab页面: 第6章、Android应用的资源 ...

    ZY-Player-Android:基于https

    ZY Player Android资源... “青少年模式”改变“关键字过滤” 解析接口兼容 选集支持单双列切换 本地导入提示“解析异常,请检查”问题修复 清除了一些没用的权限 v2.4.3 App字体大小不受系统字体影响 选集优化 修复

    android-consent-sdk:适用于Android的可配置同意SDK

    提供可配置的同意书,可以显示为: 对话 FragmentDialog (持续改变方向) 活动 分段 存储同意结果并提供访问方法。 安装 在应用程序的build.gradle中添加以下依赖项: implementation '...

Global site tag (gtag.js) - Google Analytics