前言
前面分享了一篇“黑白化主题”的文,主要适用场景是不久就要到来的“清明”等时节或者是其他的国家公祭日什么的(一名成熟的程序员,要学会自己提产品需求)。
今天分享的是一个Android 深色模式适配,可定时开启的APP内主题切换管理工具。
今天想着将深色模式的管理整合到一个文件当中,想到自己深色模式适配的文章上,结果才发现我原来没有写这篇文章……为啥我脑子里记得我好像写过的呢,啊,怕是在脑海里曾经构思过,然后脑子骗自己以为写了。
闲话少说,直接开码。
深色模式适配
这个比较简单,首先改一下style,用DayNight的
然后在资源文件夹里,加一个文件夹values-night,里面放什么呢,就是你对应深色模式下的颜色配置文件colors.xml
其他图片文件资源其实也一样,建立一个mipmap-night文件夹放进去就好了。
APP主题切换工具
这个我自己上代码了
/**
* 深色模式工具
*
* @author D10NG
* @date on 2020/4/27 2:03 PM
*/
class NightModeUtils constructor(context: Context) {
private val mSpf = context.getSharedPreferences("config_data", Context.MODE_PRIVATE)
companion object {
@Volatile
private var INSTANCE: NightModeUtils? = null
@JvmStatic
fun getInstance(context: Context) : NightModeUtils =
INSTANCE ?: synchronized(this) {
INSTANCE ?: NightModeUtils(context).also {
INSTANCE = it
}
}
private const val SPF_THEME_MODE = "theme_mode"
private const val SPF_THEME_TIMER = "theme_timer"
}
/** 获取设置 */
private fun getSpfThemeMode() : Int = mSpf.getInt(SPF_THEME_MODE, ThemeMode.MODE_FOLLOW_SYSTEM.intValue)
/** 设置 */
priv