前言
Android的onConfigurationChanged()这个方法很常见,之前关于横竖屏和语言切换的也介绍过,今天又一次再介绍一下之前没有介绍的。
记录一下,方便自己查阅。也是流水文一篇。
正文
这里要分Application和Activity(或AppCompatActivity)来介绍。
Application
在Application中也可以重写onConfigurationChanged(),
@Override public void onConfigurationChanged(@NonNull Configuration newConfig) { super.onConfigurationChanged(newConfig); }
在Application中,可以监听系统的所有变化,比如语言,日夜模式,分辨率等。
因此,做系统换肤,如果用了我日夜皮肤库BiuSkin1DN,只需要这里进行重新刷新UI资源即可。
Activity
在Activity中对onConfigurationChanged()是需要配置的。
Fragment跟Activity一样,这里就不单独了
需要在AndroidManifest.xml中配置一下
android:configChanges="keyboardHidden|orientation|touchscreen|screenSize|locale|screenLayout|mcc|mnc|uiMode|layoutDirection|fontScale|smallestScreenSize|navigation|keyboard"
上面是我常配置的值,部分含义如下:
值 含义 mcc SIM卡唯一标识IMSI中的国家代码,由三位数字组成 mnc SIM卡唯一标识IMSI中的运营商代码,由两位数字组成 locale 设备的本地位置发生了改变,一般指切换了系统语言 touchscreen 触摸屏发生了改变 keyboard 键盘类型发生了改变,比如使用了外插键盘 keyboardHidden 键盘的可访问性发生了改变 navigation 系统导航方式发生了改变 screenLayout 屏幕布局发生了改变 fontScale 系统字体缩放比例发生了改变 uiMode 用户界面发生了改变,比如日夜模式 orientation 屏幕方向发生了改变, screenSize 屏幕尺寸发生了改变, smallestScreenSize 屏幕的物理大小改变了 layoutDirection 布局方向发生变化 density 显示密度变化
下面以日夜模式为例哈
不配置
AndroidManifest.xml中不配置
android:configChanges="uiMode"
当系统切源日夜模式时,Activity就会先销毁再创建(这个是Android做的),这样就可以重新加载对应的UI资源。
# 销毁 onDestroy: # 重新创建 onCreate: onResume:
也就是界面闪一下。
配置
AndroidManifest.xml如有如下配置
android:configChanges="uiMode"
当系统切源日夜模式时,Activity会回调onConfigurationChanged(),让用户自己进行刷新UI。
onConfigurationChanged() onResume:
参考文章
-
《》
-
《》
历史上的今天
暂无评论...
随机推荐
余光中:绝色
美丽而善变的巫娘,那月亮翻译是她的特长却把世界译走了样 把太阳的鎔金译成了流银把烈火译成了冰而且带点薄荷的风味 凡尝过的人都说译文是全不可靠但比起原文来呢却更加神秘,更加美 雪是另一位唯美的译者存心把世界译错或者译对,诗人说只因原文本来就...
[代码片段]GradientTextView渐变的TextView
前言本质上就是通过LinearGradient来实现渐变的正文public class GradientTextView extends androidx.appcompat.widget.AppCompatTextView { public GradientTextView(Context...
Android Studio重构清除无引用资源
前言Android开发中,发现移植的APP模块存有很多图片和xml等资源,至于是否有引用,不去查询是不太好知道的。但是Android Studio有个功能,也就是Android Studio Refactor/Remove Unused Resources【重构,移除没有引用的资源】。PS:...
Android双屏异显(Presentation)的简单使用
前言Android 从4.2开始支持双屏显示,支持版本为17以上。Android 双屏原理说白了,自定义一个Presentation类,Android 的标准实现是使用 API Presentation 来实现异显的功能。public class Presentation extends D...
Android中ImageView半边圆角处理记录2
前言之前介绍过对ImageView进行圆角处理,具体文章《Android中ImageView半边圆角处理记录 -91易搜 - 阅读是一种生活方式 ()》,后面发现网上还有一种更简单的一种方式。有点:代码少,简单缺点:边界不够圆滑(存在锯齿)正文具体效果如下(左侧是RoundImage...
舒婷:北戴河之滨
那一夜我仿佛只有八岁我不知道我的任性要求着什么你拨开湿漉漉的树丛引我走向沙滩在那里 温柔的风抚摸着毛边的月晕潮有节奏地沉没在黑暗里 发红的烟头在你眼中投下两瓣光焰你嘲弄地用手指捺灭那躲闪的火星突然你背转身掩饰地以不稳定的声音问我海怎么啦什么也看不见 你...