Sir*_*mra 3 android splash-screen kotlin
在基于 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>
Run Code Online (Sandbox Code Playgroud)
Style 也有 2 个 style.xml 文件——一个用于深色,一个用于浅色:
<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/splash_back</item>
</style>
Run Code Online (Sandbox Code Playgroud)
它是从清单中调用的:
<activity
android:name="com.app.ui.splash.SplashActivity"
android:theme="@style/SplashTheme">
Run Code Online (Sandbox Code Playgroud)
现在的问题是,当我的应用程序从浅色模式切换到暗模式时,用户将关闭应用程序然后再次打开应用程序,2 秒后,它仍然显示浅色模式闪屏,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)
}
}
}
Run Code Online (Sandbox Code Playgroud)
遇到这种情况怎么办?在从样式和可绘制对象加载时,如何在第一个实例本身中加载暗模式飞溅?
小智 6
我遇到了和你一样的问题,最后,我意识到目前对于不包含暗模式功能的 Android 版本没有办法做到这一点。因此,对于旧版本,即使您在应用程序中启用暗模式主题,您也会看到浅色闪屏
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
Run Code Online (Sandbox Code Playgroud)
您也可以在 Android 9 及更低版本中的 WhatsApp 和 Messenger 等许多其他应用程序中测试此行为,即使您在应用程序内打开了暗模式,它也会向您显示浅色闪屏。愿它帮助某人节省他的时间。
| 归档时间: |
|
| 查看次数: |
781 次 |
| 最近记录: |