再谈Android日夜模式

Android  小知识  2023年8月29日 am8:08发布1年前 (2023)更新 91es.com站长
102 0 0

前言

之前介绍过Android日夜模式的使用,日夜模式是Android高版本自带的一种模式,很方便也很使用。如果换肤只有2种皮肤,这个是最佳选择,因为Android日夜模式只要按照规则即可实现。

虽然介绍过,但很多细节还是没有说明白,因此由写一篇流水文,方便自己回顾。

正文

日夜模式就是我们常说的静态换肤的一种。进入话题前,先介绍一下优缺点。

知此知彼,百战不殆

优点

  1. 使用简单,Android自带

缺点

  1. 只支持两套皮肤(日间和夜间皮肤)

  2. APK可能臃肿(若图片资源过多的话)

资源目录

Android高版本支持日夜模式,并创建夜间对应资源目录。

drawable
# 白天(默认)
drawable-nodpi
drawable-mdpi
# 黑夜
drawable-night-nodpi
drawable-night-mdpi

注意night的位置,是在中间哈!

位置写错是Android是无法识别里面黑夜资源图片!

values
# 白天(默认)
values
# 黑夜
values-night

AndroidManifest.xml

<activity
    android:name=".MainActivity"
    android:configChanges="uiMode"
    android:exported="true"
    android:launchMode="singleInstance">
    //站长 略
</activity>

这里主要是配置了

android:configChanges="uiMode"
不设置uiMode

如果不设置uiMode,切换模式时MainActivity会先销毁,然后重新创建。

#MainActivity在顶部
onPause
onStop:
onDestroy
onCreate
onResume

如果界面没啥逻辑,只是刷新UI,那没啥问题。一旦有其他逻辑,比如加载动画等,那就是又会重新走一次,这样肯定不友好。

设置uiMode

如果设置了uiMode,须重写onConfigurationChanged(),因此MainActivity不会先销毁再启动,二是直接回调onConfigurationChanged()这里。

PS: android:configChanges=""里面还有好多配置,这里不介绍。

@Override
public void onConfigurationChanged(@NonNull Configuration configuration) {
    super.onConfigurationChanged(configuration);
    //站长,打印模式变化
    Log.d(TAG, "updateMode configuration uiMode : " + (configuration.uiMode & Configuration.UI_MODE_NIGHT_MASK));
    //重新加载UI
    reloadUI();
}

其实,Android的日夜模式都是设计好了的,要么重启Activity(不配置uiMode),要么自己重新加载一次UI资源。

隐藏内容!
付费阅读后才能查看!
2
3
多个隐藏块只需支付一次

参考文章

  1. Android日夜模式

 历史上的今天

  1. 2024: 使用ffmpeg抽取视频I帧(0条评论)
  2. 2020: 去除阴影动画效果和影藏滚动条(0条评论)
  3. 2019: adb shell settings 参数命令集合(0条评论)
  4. 2019: AccessibilityService自启动(0条评论)
  5. 2019: 丰子恺:渐(0条评论)
版权声明 1、 本站名称: 91易搜
2、 本站网址: 91es.com3xcn.com
3、 本站内容: 部分来源于网络,仅供学习和参考,若侵权请留言
3、 本站申明: 个人流水账日记,内容并不保证有效

暂无评论

暂无评论...

随机推荐

夏丏尊:幽默的叫卖声

住在都市里,从早到晚,从晚到早,不知要听到多少种类多少次数的叫卖声。深巷的卖花声是曾经入过诗的,当然富于诗趣,可惜我们现在实际上已不大听到。寒夜的“茶叶蛋”、“细沙粽子”、“莲心粥”等等,声音发沙,十之七八似乎是“老枪”的喉咙,困在床上听去颇有些凄清。每种叫卖声,差不多都有着特殊的情调。我在这许多...

Android 修改ListView快速滚动条的bar

前言最近需要使用修改ListView快速滚动条的bar,ListView是可以默认支持的,但就是太丑了,需要定制一下。下面就记录一下自己使用的方法。好记性不如烂笔头正文本文并非原创,感谢网友分享。隐藏内容!付费阅读后才能查看!¥2 ¥3多个隐藏块只需支付一次付费阅读

Android换肤之Toast和Dialog

前言前面介绍过Android静态换肤日夜模式的切换(原文:《Android静态换肤-日夜主题切换之继承Activity记录 》),从中我们知道,Toast和Dialog存在无法切换成功。原因是Toast或者Dialog是需要时才去初始化的,此时换肤插件没法获取到View。PS:日夜模式不存在...

[摘]adb命令行查询content-provider

偶尔需要使用adb明白改变和查询content-provider中的属性值一、conent 帮助文档如下usage: adb shell content [subcommand] [options]usage: adb shell content insert --uri <URI&g...

乔叶:畏惧告别

我实际上是个十分口拙的人。而且,特别是在关键时刻尤为口拙。比如告别。告别似乎是一个普遍公认的隆重时刻,也是一个最能够让人感怀的时刻。越是这样的时刻,我就越是畏惧。倒不是怕伤心怕落泪,而是怕说话。——人多还好,你一句我一句也容易混过。最怕人少,尤其是只有两个人的时候,无论语言的茅草多么丰盛,也总会有...

一招永久去除WPS推送广告

前言WPS是国内优秀的办公软件,非常好用和优秀,但广告太多太烦人了。是不是弹出一个,让人有点[恶心]。本文参考其网有文章,摘抄于此。PS: 仅仅在Window系统上验证过。正文打开WPS的配置工具(一般是菜单-》WPS Office-》WPS Office 工具-》配置工具)打开后选择...