使用Jetpack Compose,使用Material 2,您可以通过以下轻松查看主题是否处于灯光模式
val light = MaterialTheme.colors.isLight
使用材料3,我看不到这种能力。有没有一种方法可以用材料3主题来做到这一点?
找到了一个解决方案。Compose中的Color
有一个内置的方法luminance
,该方法以0和1之间的浮点形式返回相对亮度。我为ColorScheme
编写了一个扩展函数,如果背景亮度大于0.5,该函数将返回true。
@Composable
fun ColorScheme.isLight() = this.background.luminance() > 0.5
将其用作:
val isLight = MaterialTheme.colorScheme.isLight()
现在,系统是否处于黑暗模式并不重要,重要的是主题。
在JetpackCompose中,如果启用或未启用,您可以使用此方法返回
isSystemInDarkTheme()
然后在你的代码
if (isSystemInDarkTheme()){} \Dark mode enabled
else {} //Light mode enabled