在基于Kotlin的Android应用程序中,我有一个闪屏界面,使用以下代码作为样式属性进行开发:
可绘制文件(此为浅色版本,深色版本具有不同的渐变颜色代码):
可绘制文件(此为浅色版本,深色版本具有不同的渐变颜色代码):
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<gradient
android:angle="270"
android:endColor="#43dc91"
android:startColor="#29abe2" />
</shape>
</item>
<item>
<bitmap
android:gravity="center"
android:src="@drawable/My_Image" />
</item>
</layer-list>
样式还有2个style.xml文件——一个用于黑色主题,一个用于白色主题:
<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/splash_back</item>
</style>
而它是从清单文件中调用的:
<activity
android:name="com.app.ui.splash.SplashActivity"
android:theme="@style/SplashTheme">
现在的问题是,当我的应用从浅色模式切换到深色模式时,用户将关闭应用程序,然后再次打开应用程序,2秒钟内仍会显示浅色模式的启动画面,之后才会加载深色模式的启动画面。
这可能是因为当应用程序在闪屏活动中加载时->Oncreate,我正在验证如果应用程序有暗主题的偏好设置,那么加载深色模式,然后将我的应用程序切换到深色模式,如下所示:
private fun setAppTheme() {
when {
userHolder.theme != null -> {
if (userHolder.theme == string_(R.string.text_dark_mode))
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
else AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
}
else -> {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM)
}
}
}
在这种情况下应该怎么办?如何在从样式和可绘制文件加载时就在第一实例中加载深色模式的启动画面?