gpt4 book ai didi

android - Activity 在切换到黑暗/夜间主题之前快速闪烁白色

转载 作者:行者123 更新时间:2023-12-04 23:40:54 25 4
gpt4 key购买 nike

我在我的应用程序中实现了暗/夜间模式切换我从 Google I/O App 复制了实现.
我创建了一个 ThemedActivityDelegate可以包含在 ViewModels 中。实际更改为亮或暗是使用扩展功能完成的:updateForTheme .
但我看到 SettingsActivity在变黑之前短暂闪烁白色。虽然我把 updateForTheme setContentView之前的方法.
主要 Activity :

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
viewModel = ViewModelProvider(this, viewModelFactory).get(MainViewModel::class.java)
updateForTheme(viewModel.currentTheme)

lifecycleScope.launch {
lifecycle.repeatOnLifecycle(Lifecycle.State.STARTED) {
launch {
viewModel.theme.collect { theme ->
updateForTheme(theme)
}
}
}
}
}
扩展名.kt:
fun AppCompatActivity.updateForTheme(theme: Theme) = when (theme) {
Theme.DARK -> delegate.localNightMode = AppCompatDelegate.MODE_NIGHT_YES
Theme.LIGHT -> delegate.localNightMode = AppCompatDelegate.MODE_NIGHT_NO
Theme.SYSTEM -> delegate.localNightMode = AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM
Theme.BATTERY_SAVER -> delegate.localNightMode = AppCompatDelegate.MODE_NIGHT_AUTO_BATTERY
}
设置 Activity :
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
updateForTheme(Theme.DARK)
setContentView(R.layout.activity_settings)
}
更新:当我调用 updateForTheme(viewModel.currentTheme)之前 super.onCreate(savedInstanceState)然后它可以工作,但 Dagger 没有被初始化。

最佳答案

尝试以下操作:

fun AppCompatActivity.updateForTheme(theme: Theme) {
val mode = when (theme) {
Theme.DARK -> AppCompatDelegate.MODE_NIGHT_YES
Theme.LIGHT -> AppCompatDelegate.MODE_NIGHT_NO
Theme.SYSTEM -> AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM
Theme.BATTERY_SAVER -> AppCompatDelegate.MODE_NIGHT_AUTO_BATTERY
else -> AppCompatDelegate.MODE_NIGHT_UNSPECIFIED
}
if (mode != AppCompatDelegate.MODE_NIGHT_UNSPECIFIED) {
AppCompatDelegate.setDefaultNightMode(mode)
}
}
在以下方面对我很有效:
https://github.com/shlomikatriel/BucksBunny
你可以调用 setDefaultNightMode在处理用户选择时设置。

关于android - Activity 在切换到黑暗/夜间主题之前快速闪烁白色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70137907/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com