最近看了洋佬的公众号,谈到深色模式,于是自己在kotlin上面实现了一下,下面是效果图

Kotlin 深色模式(夜间模式)_Kotlin

安卓10叫这个为Dark theme,切换为深色的时候可以减少手机功耗,在暗的环境里更容易使用

1.继承DayNight主题

Kotlin 深色模式(夜间模式)_Kotlin_02

 

2.在res下面新建values-night文件,然后把深色的资源放到里面

Kotlin 深色模式(夜间模式)_Kotlin_03

 

drawable资源也一样,对应的drawable-night-xhdpi等

3.在baseactivity里面监听变化,设置主题

Kotlin 深色模式(夜间模式)_Kotlin_04

 

这里有一点需要注意,recreate重新创建视图,所以在有些地方需要判断类型空指针,不然会报错

这里我在初始化的地方打印了log,可以看到,每次切换模式都会伴随着视图重建

Kotlin 深色模式(夜间模式)_Kotlin_05

 

效果图有点丑,因为颜色值基本取反的,自己瞎配置的颜色也只能含着泪自己看了,这里就ok了,很简单