找不到 windowSplashScreenAnimatableIcon

windowSplashScreenAnimatableIcon not found

我想在 Android 12 上自定义启动画面,但我收到 AAPT 错误:

AAPT: error: style attribute 'android:attr/windowSplashScreenAnimatableIcon' not found.

这里是样式的相关部分:

<style name="SplashTheme" parent="@style/Theme.MaterialComponents.DayNight.NoActionBar">
    <item name="android:windowSplashScreenAnimatableIcon">@drawable/ic_splash</item>
</style>

也就是documentation中提到的属性。

以下是我正在使用的构建工具库的概述:

compileSdk="android-S"
minSdk=21
targetSdk="S"
buildTools='31.0.0-rc4'

我使用 Android Studio Arctic Fox | 2020.3.1 Beta 1 仅供记录。

有人可以指出我做错了什么吗?

文档好像是wrong/outdated。正确的属性是:

<item name="android:windowSplashScreenAnimatedIcon">@drawable/ic_splash</item>

R.attr class 中列出了正确的属性。


在此答案的先前版本中,我有一种方法可以使启动画面像以前一样工作,但是这不再起作用了。

今天推荐使用splash compat库和这种风格:

<style name="SplashTheme" parent="Theme.SplashScreen">
    <item name="windowSplashScreenBackground">@color/ic_launcher_background</item>
    <item name="windowSplashScreenAnimatedIcon">@drawable/ic_launcher_foreground</item>
    <item name="postSplashScreenTheme">@style/Your.Normal.Theme</item>
</style>

这有两个假设,即您使用具有默认命名的自适应启动器图标。在我的例子中,ic_launcher_background 是纯色,这就是我使用颜色而不是可绘制前缀的原因。希望对其他人有所帮助。

这是 Google 的 splash migration 指南。

如果您在 pubspec.yaml

中添加 android12: true 就会发生这种情况

对于在自定义初始屏幕时遇到问题的任何人,请确保您使用的是正确的父主题

而不是

<style name="SplashTheme" parent="@style/Theme.MaterialComponents.DayNight.NoActionBar">
    <item name="android:windowSplashScreenAnimatableIcon">@drawable/ic_splash</item>
</style>

使用

<style name="SplashTheme" parent="Theme.SplashScreen">
    <item name="android:windowSplashScreenAnimatableIcon">@drawable/ic_splash</item>
    <item name="postSplashScreenTheme">@style/Your.Normal.Theme</item>
</style>