Ral*_*gha 13 android material-components-android android-jetpack-compose
借助 Jetpack Compose,使用 Material 2,您可以使用以下命令轻松查看主题是否处于浅色模式
val light = MaterialTheme.colors.isLight
Run Code Online (Sandbox Code Playgroud)
使用材质 3,我看不到这种能力。有没有办法用 Material 3 主题做到这一点?
Ral*_*gha 13
找到了解决方案。ColorCompose 有一个内置方法luminance,它以 0 到 1 之间的浮点形式返回相对亮度。我编写了一个扩展函数,ColorScheme如果背景亮度大于 0.5,则返回 true。
@Composable
fun ColorScheme.isLight() = this.background.luminance() > 0.5
Run Code Online (Sandbox Code Playgroud)
将其用作:
val isLight = MaterialTheme.colorScheme.isLight()
Run Code Online (Sandbox Code Playgroud)
现在系统是否处于深色模式并不重要,重要的是主题。
小智 8
在 JetpackCompose 中,您可以使用此方法,该方法返回是否启用了明/暗模式
isSystemInDarkTheme()
Run Code Online (Sandbox Code Playgroud)
然后在你的代码中
if (isSystemInDarkTheme()){} \\Dark mode enabled
else {} //Light mode enabled
Run Code Online (Sandbox Code Playgroud)