深色模式适配参考

用一句话来说,适配深色模式的唯一的工作就是打开你的app界面,打开系统深色模式,把app图片、资源、颜色等等,在黑色night目录下同样适配一套 深色模式的UI。

适配深色模式不能依赖于系统的强制反色,因为全局反色是在miui12的系统代码上才有的,在miui11之中的深色模式是没有全局反色功能的,因此App需要手动适配深色模式

app通过资源id等方式获取资源文件时,如果在深色模式下,app会读取对应-night-目录的资源文件,规律如下:

普通模式 深色模式
values values-night
color color-night
drawable drawable-night
drawable-nxdpi drawable-night-nxdpi
drawable-xhdpi drawable-night-xhdpi
drawable-xxhdpi drawable-night-xxhdpi
drawable-xxxhdpi drawable-night-xxxhdpi
values-nhdpi values-night-nhdpi

以此类推,文件夹的命名规律就是中间插入: -night-

切换到深色模式时,资源应用的优先顺序:

  1. 应用提供的-night资源
  2. 应用设置的默认资源(通常是亮色下的资源,也可以是应用主动在深色模式下设置的主题)
  3. 系统的默认深色资源
  4. 系统默认的亮色资源

只要night文件夹放了对应的资源文件,系统开启深色模式设置开关就会自动读取night文件夹下的图片,night资源不会被系统全局反色,只有没主动适配的视图布局才可能会被全局反色。

如果App因为night资源数远超20个,由于系统的代码判断App,不会被强制反色。

小技巧:对于纯色图片或图标,如果不想让UI切两套图片(黑色调和白色调)放到不同的资源文件夹下,如果是xml文件,可以使用着色器,不同的控件需要使用不同的着色器,如下:

属性 深色模式适配方法
Botton BottonTint="@color/xxx"
ImageView tint="@color/xxx"
background backgroundTint="@color/xxx"
drawableLeft drawableTint="@color/xxx"

可以在night目录下放对应的颜色,这样依赖系统读取night资源文件来达到适配深色模式的目的

MIUI Android Q 深色模式适配指南

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 从Android10(API 29)开始,在原有的主题适配的基础上,Google开始提供了Force Dar...
    申国骏阅读 5,507评论 3 27
  • 深色模式适配的目标和方法 在MIUI12上推出全局的深色模式,所有系统应用和主流三方应用适配。 要达到的效果:系统...
    LineCutFeng阅读 11,416评论 0 5
  • 这一期接了一个“适配深色模式”的需求,在做之前过了一遍自己负责的几个界面,发现系统的反色基本上把所有的工作都做完了...
    艾伦图不灵阅读 812评论 0 0
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,578评论 16 22
  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    迷月闪星情阅读 10,617评论 0 11