Android通过终止、重启应用程序来重新加载资源文件,以做到对语言、区域和硬件实时变化的支持。
它的默认的行为不是总是方便和令人满意的,尤其当配置变化(如屏幕方向和键盘可视)、用户旋转设备或划出键盘等。你可以通过监测和响应定制你的应用程序来对这些变化作出响应。
为了能让Activity能监听实时的配置变化,需要在manifest节点里添加“android:configChanges”特性,指定你要处理的配置变化事件。
接下来的列表给出了你可以指定的配置变化的事件值:
❑ orientation 屏幕在纵向和横向间旋转。
❑ keyboardHidden 键盘显示或隐藏。
❑ fontScale 用户变更了首选的字体大小。
❑ locale 用户选择了不同的语言设定。
❑ keyboard 键盘类型变更,例如手机从12键盘切换到全键盘
❑ touchscreen或navigation 键盘或导航方式变化,一般不会发生这样的事件。
你可以选择捕获多个事件,通过在各事件值间使用“|”。
接下来的代码片段显示了Activity要捕获屏幕方向和键盘可视的事件:
- <activity android:name=”.TodoList”
-
- android:label=”@string/app_name”
-
- android:theme=”@style/TodoTheme”
-
- android:configChanges=”orientation|keyboard”/>
增加这个特性就会强制应用程序在指定的配置变化时不用再重新启动,而是触发Activity中的onConfigurationChanged方法。如下面的代码片段所示,override这个方法去捕获配置变化,通过传入的Configuration 对象的值进行合适的处理。需要提醒的是需要调用父类的方法,并且要重新加载Activity使用的资源,以防有变更。
- @Override
-
- public void onConfigurationChanged(Configuration _newConfig) {
-
- super.onConfigurationChanged(_newConfig);
-
-
-
- [ ... 基于资源值更新UI ... ]
-
-
-
- if (_newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
-
- [ ... 对不同的屏幕方向作出处理 ... ]
-
- }
-
-
-
- if (_newConfig.keyboardHidden == Configuration.KEYBOARDHIDDEN_NO) {
-
- [ ... 对键盘可见作出处理 ... ]
-
- }
-
- }
当onConfigurationChanged 被调用时,Activity的资源变量都已经用新的值进行了更新,所以它们是安全的。
任何你没有显式指明的配置变化事件,都将由应用程序捕获,而且仍然会引起应用程序的重启,而不会调用onConfigurationChanged 方法。
分享到:
相关推荐
通过设置`android:typeface`可以改变字体风格(如monospace、serif、sans-serif)。若需使用自定义字体,需将字体文件放入assets目录下,然后创建`Typeface`对象并应用到TextView。 7. **行间距与字母间距** - `...
在Android中,我们可以通过XML来定义和配置Drawable。比如,创建一个简单的Rectangular Shape Drawable: ```xml <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#FF...
创建一个基本的滚轮Picker,我们需要在XML布局文件中添加Picker元素,并配置相关属性。例如,对于`NumberPicker`,我们可以这样定义: ```xml android:id="@+id/number_picker" android:layout_width="wrap_...
本示例将详细介绍如何从外部配置Android项目的主题和样式,以便修改系统默认的控件样式和风格。 一、Android主题(Themes) 1. **主题的定义**:主题是全局的UI设定,它能影响到整个应用程序或某个Activity的所有...
该属性用于指定设备配置发生变化时(如语言环境改变、屏幕方向变化等),系统是否应调用`Activity`的`onConfigurationChanged()`方法来处理这些变化。这有助于避免`Activity`因配置改变而频繁地被重建,从而提高性能...
在项目"PageChange"中,可能包含了实现上述功能的示例代码,包括如何根据用户交互改变配置并保存,以及在应用程序启动时加载这些配置。这有助于理解在实际开发中如何处理配置文件的读写操作。 总结来说,Android的...
这个属性用于指定哪些配置变化会导致系统调用onConfigurationChanged()方法,而不是重新创建activity。例如,设置为"locale|orientation"意味着仅在语言或屏幕方向改变时触发回调。 5. android:enabled=["true" | ...
Android提供了多种动画类型,其中包括补间动画(Tween Animation),其中XML配置的旋转动画是常用的一种。本文将详细解释如何使用XML来配置旋转动画,并通过一个简单的例子展示其应用。 1. **XML旋转动画配置** 在...
- `android:isIndicator`:如果设为true,用户无法改变评分,仅作展示用。 - `android:clickable`:是否允许用户点击改变评分。 二、动态操作RatingBar 1. 获取RatingBar对象 在Activity或Fragment中,通过...
### Android XML 动画配置详解 #### 一、前言 在Android开发中,动画是提升用户体验的关键元素之一。合理地运用动画可以让应用界面变得更加生动有趣。本文将深入解析Android中常用的动画及其XML配置文件的相关知识...
下面将逐一介绍这四种动画类型的XML配置方式。 ##### 3.1 透明度动画(Alpha Animation) 透明度动画用于改变视图的透明度,从而实现淡入淡出的效果。可以通过以下XML格式定义: ```xml android:fromAlpha="0.1...
在Android开发中,网络权限配置是至关重要的,它关乎到应用程序能否正常地访问网络资源,进行数据的发送和接收。本文将深入探讨Android系统中的网络权限配置,以及如何在实际项目中正确设置和使用。 首先,Android...
XML配置如下: ```xml <translate xmlns:android="http://schemas.android.com/apk/res/android" android:fromXDelta="0%" android:toXDelta="100%" android:fromYDelta="0%" android:toYDelta="0%" android:...
线性渐变通过`android:type="linear"`指定,可以设置`android:startColor`、`android:endColor`、渐变方向(`android:angle`或`android:startX`和`android:endX`),以及中间颜色(`android:centerColor`)。...
- 在Android 10(API level 29)及以上版本,由于隐私政策的改变,第三方应用可能无法访问某些短信,比如SIM卡上的短信。 - 监听短信可能会因系统或第三方安全应用的限制而无法正常工作,例如在某些设备上,系统默认...
在XML布局文件中,我们可以使用`android:configChanges`属性来控制当特定配置变化时如何处理。例如,如果设置为`orientation`,那么当屏幕方向改变时,系统不会默认重启Activity,而是调用`onConfigurationChanged()...
- XML配置:在AndroidManifest.xml中,设置Activity的主题为`Theme.NoTitleBar.Fullscreen`,如下: ```xml <activity android:name="ViewStatusDetailActivity" android:theme="@android:style/Theme....
1. **项目配置** 首先,创建一个新的Android项目,命名为“Widget”。在创建过程中,选择合适的模板,例如“Empty Activity”。 2. **编写Java代码** 在项目的主活动中(`Widget.java`),引入必要的包: ```...
* android:configChanges:指定Activity在配置改变时的行为 * android:enabled:指定Activity是否启用 * android:excludeFromRecents:指定Activity是否从最近任务列表中排除 * android:exported:指定Activity是否...