kotlin|Android深色模式适配-想法1.0

Android深色模式适配-深色主题工具类

package com.example.kotlindemo.utilsimport android.content.Context import android.content.res.Configuration import androidx.appcompat.app.AppCompatDelegate import androidx.core.content.edit/** * author: chen * data: 2021/10/11 * des: 深色主题工具类 */ object DarkThemeUtil {private const val DATA_NAME = "DayNight" // 存储深色模式状态的文件名,自行更改 /** * 判断是否开启了深色模式 */ fun isDarkTheme(context: Context): Boolean {val flag = context.resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK return flag == Configuration.UI_MODE_NIGHT_YES }/** * 跟随系统设置打开关闭深色主题 */ fun DefaultTheme() {AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM) }/** * 打开深色模式 */ fun openDarkTheme() {AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES) }/** * 关闭深色模式 */ fun closeDarkTheme() {AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO) }/** * 写入内存数据 * 将当前的深色模式状态保持到内存,下次启动 APP 以读取 * @param context Context * @param state 深色模式状态,true 打开状态,false 关闭状态 */ fun writeDarkThemeState(context: Context, state: Boolean) {context.getSharedPreferences(DATA_NAME, Context.MODE_PRIVATE) .edit{ putBoolean("boolean_dark_theme_state", state) } }/** * 读取内存数据 */ fun readDarkThemeState(context: Context): Boolean {return context.getSharedPreferences(DATA_NAME, Context.MODE_PRIVATE) .getBoolean("boolean_dark_theme_state", false) } }

下面我用color中的background_color公用背景色来展示,说白了就是不同模式下Android会自动切换你设置好的颜色。
kotlin|Android深色模式适配-想法1.0
文章图片

values/colors.xml 的代码
#008577 #00574B #D81B60#000000 #ffffff #008adb #FF039BE5 #FF01579B #FF40C4FF #FF00B0FF #66000000#ffffff

values-night/colors.xml 的代码
#111111 #00574B #D81B60#000000 #ffffff #008adb #FF039BE5 #FF01579B #FF40C4FF #FF00B0FF #66000000#111111

在xml添加上背景色即可:
kotlin|Android深色模式适配-想法1.0
文章图片

在你想要activity开启深色主题适配即可
kotlin|Android深色模式适配-想法1.0
文章图片

【kotlin|Android深色模式适配-想法1.0】效果图如下:
kotlin|Android深色模式适配-想法1.0
文章图片

kotlin|Android深色模式适配-想法1.0
文章图片

代码仅供参考~

    推荐阅读