我试图添加对 Android 12 初始屏幕的支持。这是我的v31/styles.xml
<resources>
<style name="SplashTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:windowFullscreen">true</item>
<item name="android:navigationBarColor">@android:color/transparent</item>
<item name="android:windowSplashScreenAnimatedIcon">@drawable/ic_launcher_foreground</item>
<item name="android:windowSplashScreenIconBackgroundColor">#FF3044</item>
<item name="android:windowSplashScreenBackground">#FF3044</item>
</style>
</resources>
新的飞溅后,我可以看到白屏。那个白屏是,android:windowBackground
但如果我试图将它设置为@null
,我会在白屏的地方得到倒置的飞溅。飞溅后如何去除白色背景?我猜 Splash API 旨在替换 windowBackground。
App flow -> SplashActivity(带有提到的主题),然后我使用 ViewModel 暂停 preDraw 方法,然后导航到另一个活动。
SplashActivity.kt -onCreate()
val content: View = findViewById(android.R.id.content)
content.viewTreeObserver.addOnPreDrawListener(
object : ViewTreeObserver.OnPreDrawListener {
override fun onPreDraw(): Boolean {
return if (viewModel.appInit()) {
navigateToHome()
content.viewTreeObserver.removeOnPreDrawListener(this)
true
} else {
false
}
}
}
)
HomeActivity 没有任何主题。当我添加<item name="android:windowBackground">@color/android:black</item>
Splash 的主题时,我得到的是黑色的,而不是白屏。