AndroidManifest.xml的configChanges配置简介

Android  2020年9月4日 pm12:25发布4年前 (2020)更新 城堡大人
105 0 0

Android文档介绍configuration

Android中的组件Activity在AndroidManifest.xml文件中可以指定参数android:configChanges,用于捕获手机状态的改变。

如果Activity添加了android:configChanges属性,在当所指定属性(ConfigurationChanges)发生改变时,通知程序调用onConfigurationChanged()函数。

Lists configuration changes that the activity will handle itself. When a configuration change occurs at runtime, the activity is shut down and restarted by default, but declaring a configuration with this attribute will prevent the activity from being restarted. Instead, the activity remains running and its onConfigurationChanged() method is called.

大概意思就是:如果我们AndroidManifest.xml中的Activity中的android:configChanges申明了对应的属性,当属性改变时Activity不会重启且调用onConfigurationChanged()。

configuration配置的格式

将下列字段用“|”符号分隔开。

如下:

    <activity
        android:configChanges="orientation|uiMode|keyboard|keyboardHidden|fontScale|mcc|mnc|locale|touchscreen|navigation|screenLayout|colorMode"
        android:name=".MainActivity"
        android:launchMode="singleInstance">

        </activity>

configuration属性简介

下面简单的介绍一下configuration可以配置的属性

mcc

IMSI移动国家/地区代码(MCC)已更改-已检测到SIM卡并更新了MCC

mnc

IMSI移动网络代码(MNC)已更改-已检测到SIM卡并更新了MNC。

locale

语言环境已更改-用户选择了一种新的语言来显示文本。

touchscreen

触摸屏已更改。(这通常不会发生。)

keyboard

键盘类型已更改-例如,用户已插入外部键盘。

keyboardHidden

键盘的可访问性已更改-例如,用户显示了硬件键盘。

navigation

导航类型(轨迹球/ dpad)已更改。(这通常不会发生。)

PS:项目插入个别无线鼠标,会需要配置 android:configChanges=="keyboardHidden|keyboard|navigation";来阻止Activity的销毁。

screenLayout

屏幕布局已更改-这可能是由于激活了不同的显示引起的。

fontScale

字体缩放比例已更改-用户选择了新的全局字体大小。

uiMode

用户界面模式已更改-这可能是由于用户将设备放入办公桌/汽车停放区或夜间模式更改而引起的。请参阅UiModeManager。 在API级别8中添加。

orientation

屏幕方向已更改-用户已旋转设备。

注意:如果您的应用程序的目标是API级别13或更高级别(由minSdkVersion和targetSdkVersion属性声明),则还应该声明"screenSize" 配置,因为当设备在纵向和横向之间切换时,配置也会更改。

screenSize

当前的可用屏幕尺寸已更改。这表示相对于当前长宽比的当前可用大小的更改,因此当用户在横向和纵向之间切换时,此更改将改变。但是,如果您的应用程序以API级别12或更低级别为目标,则您的活动始终会自行处理此配置更改(即使在Android 3.2或更高版本的设备上运行,此配置更改也不会重新启动您的活动)。 在API级别13中添加。

smallestScreenSize

物理屏幕尺寸已更改。这表示尺寸的变化而与方向无关,因此仅在实际物理屏幕尺寸已更改(例如切换到外部显示器)时才会更改。对此配置的更改对应于 minimumWidth配置的更改。但是,如果您的应用程序以API级别12或更低级别为目标,则您的活动始终会自行处理此配置更改(即使在Android 3.2或更高版本的设备上运行,此配置更改也不会重新启动您的活动)。 在API级别13中添加。

layoutDirection

布局方向已更改。例如,从左到右(LTR)更改为从右到左(RTL)。 在API级别17中添加。

参考文章

  1. Android官方文档

PS: 大部分机器翻译,最好还是看一下官方文档。

 历史上的今天

  1. 2024: Android获取磁盘监听和路径(0条评论)
  2. 2023: RadioButton和CheckBox介绍(0条评论)
  3. 2019: 陆文夫:脚步声(0条评论)
版权声明 1、 本站名称: 笔友城堡
2、 本站网址: https://www.biumall.com/
3、 本站部分文章来源于网络,仅供学习与参考,如有侵权,请留言

暂无评论

  • 樱桃小红花
    樱桃小红花 游客

    大神,你真棒!膜拜
    加油

    回复

随机推荐

Unable to make field

前言升级新版本Android Studio后倒入部分工程出现如下问题:Unable to make field private final java.lang.String java.io.File.path accessible: module java.base does not "ope...

Android setSystemUiVisibility详解

简介下面是setSystemUiVisibility可以设置的一部分flagSYSTEM_UI_FLAG_LOW_PROFILE 弱化状态栏和导航栏的图标SYSTEM_UI_FLAG_HIDE_NAVIGATION 隐藏导航栏,用户点击屏幕会显示导航栏SYSTEM_UI_FLAG_FUL...

Android画中画新增自定义按键简介

前言Android 8.0 Oreo(API Level 26)允许活动启动画中画 Picture-in-picture(PIP)模式。PIP 是一种特殊类型的多窗口模式,主要用于视频播放。这次介绍是在画中画界面自定义按键。参考其他文章,记录于此,方便自己查阅。正文上一篇《Android...

Seekbar的一些总结

前言seekbar是很常见的,也用的比较多,今天就整理一些seekbar相关的知识。老生常谈,会的就跳过吧,这里只是简单的记录而已。正文如果不改变seekbar的progressDrawable和thumb,也就是用APP的主题样式,一般情况比较丑或者跟设计不符合,基本上都需要改动。我们...

Android监听状态栏的显示与隐藏状态栏

前言在项目中有些需要监听SystemUI(状态栏)的显示和影藏。比如视频全屏和非全屏时,需要做一些布局的动态显示,虽然我们可以控制,但还是存在偶尔状态的失控,导致布局显示不对问题。以下内容参考《笔记3 | 通过onWindowAttributesChanged和onSystemUiVisib...

许知远:窥探者的狂欢节

温斯顿要与一位美丽的姑娘相会,为此,他们必须坐上火车,到一个荒无人烟的野外,这里应该没有监视器,他和那姑娘可以有节制地表露自己的爱意和激情。他们每月如此相会一次,而且地点要经常更换,因为这个世界到处都有“老大哥”的电子眼睛。在乔治·奥威尔充满令人毛骨悚然的想象力的著作《1984》里,监视器是专制统...