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会自动切换你设置好的颜色。
文章图片
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添加上背景色即可:
文章图片
在你想要activity开启深色主题适配即可
文章图片
【kotlin|Android深色模式适配-想法1.0】效果图如下:
文章图片
文章图片
代码仅供参考~
推荐阅读
- android第三方框架(五)ButterKnife
- Android中的AES加密-下
- 带有Hilt的Android上的依赖注入
- android|android studio中ndk的使用
- Android事件传递源码分析
- RxJava|RxJava 在Android项目中的使用(一)
- Android7.0|Android7.0 第三方应用无法访问私有库
- 深入理解|深入理解 Android 9.0 Crash 机制(二)
- android防止连续点击的简单实现(kotlin)
- Android|Android install 多个设备时指定设备