我发现我正在启动的一个新应用程序存在一个奇怪的问题。我正在使用新的 Android 12 初始屏幕 API 来创建我的初始屏幕,并按照Google 提供的指南进行操作。我在我的项目中包含了 core-splashscreen,以提供与旧版本 Android 操作系统的兼容性。当我运行该应用程序时,我在 API 30 等旧操作系统版本上看到了预期的启动屏幕,但是当我在 API 31 上运行它时,我提供的启动屏幕图标不显示。显示我指定的背景颜色,但图标根本不存在。我已经尝试过使用可绘制资产和 mipmap 进行此操作,但没有任何效果。我很困惑,因为我发现的每个教程都显示了我遵循的相同步骤以及他们工作启动画面的屏幕截图,但我没有任何运气。
对于上下文,这是我对 v31 的初始屏幕样式定义:
<style name="Theme.Splash" parent="Theme.SplashScreen">
<item name="android:windowSplashScreenBackground">@color/orange_7A</item>
<item name="android:windowSplashScreenAnimatedIcon">@drawable/splash_foreground</item>
<item name="postSplashScreenTheme">@style/Theme.App</item>
</style>
除了我使用“windowSplashScreenAnimatedIcon”而不是“android:windowSplashScreenAnimatedIcon”之外,我对所有其他操作系统版本都有相同的样式。我已经尝试过 v31 在项目名称前面有和没有“android:”的情况,但都不起作用。这是我的 MainActivity.kt:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
installSplashScreen()
setContent {
MyVeevaTheme {
Login()
}
}
}
我还在我的 AndroidManifest.xml 中将“android:theme”属性设置为我的初始样式。我知道正在应用启动样式,因为它尊重背景颜色,但由于某种原因它没有显示图标,即使图标对于旧操作系统版本显示良好。提前感谢您提供的任何帮助。