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

package com.example.kotlindemo.utilsimport android.content.Contextimport android.content.res.Configurationimport androidx.appcompat.app.AppCompatDelegateimport 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 的代码

<?xml version="1.0" encoding="utf-8"?><resources>    <color name="colorPrimary">#008577color>    <color name="colorPrimaryDark">#00574Bcolor>    <color name="colorAccent">#D81B60color>    <color name="color_000000">#000000color>    <color name="color_ffffff">#ffffffcolor>    <color name="color_008adb">#008adbcolor>    <color name="light_blue_600">#FF039BE5color>    <color name="light_blue_900">#FF01579Bcolor>    <color name="light_blue_A200">#FF40C4FFcolor>    <color name="light_blue_A400">#FF00B0FFcolor>    <color name="black_overlay">#66000000color>    <color name="background_color">#ffffffcolor>resources>

values-night/colors.xml 的代码

<?xml version="1.0" encoding="utf-8"?><resources>    <color name="colorPrimary">#111111color>    <color name="colorPrimaryDark">#00574Bcolor>    <color name="colorAccent">#D81B60color>    <color name="color_000000">#000000color>    <color name="color_ffffff">#ffffffcolor>    <color name="color_008adb">#008adbcolor>    <color name="light_blue_600">#FF039BE5color>    <color name="light_blue_900">#FF01579Bcolor>    <color name="light_blue_A200">#FF40C4FFcolor>    <color name="light_blue_A400">#FF00B0FFcolor>    <color name="black_overlay">#66000000color>    <color name="background_color">#111111color>resources>

在xml添加上背景色即可:

在你想要activity开启深色主题适配即可

效果图如下:

代码仅供参考~

更多相关文章

  1. Android下修改SeekBar样式
  2. Android(安卓)设置横屏模式显示
  3. Android(安卓)UI设计模式实例代码
  4. Android实现隐藏状态栏和标题栏
  5. APIDEMO TABLELAYOUT
  6. APIDEMO TABLELAYOUT
  7. android简单的夜间模式
  8. android简单的夜间模式
  9. APIDEMO TABLELAYOUT

随机推荐

  1. Android消息处理机制(二)
  2. android sdk+MyEclipse+adt 配置与开发
  3. Android图形显示系统——一张图片的显示
  4. Android 模拟器几个小问题
  5. android 资源之 color
  6. Android(安卓)Studio配置文件路径修改
  7. Android 自动化测试 robotium
  8. Android recovery UI实现分析
  9. Android主流三方库源码分析(七、深入理解B
  10. 从Alarm看Android上层UI到内核代码的流程