Android 12 Splash Screen测试版不可修改



我正在尝试创建飞溅屏幕,并将其设置为飞溅主题——它不会拾取背景颜色,甚至不会拾取品牌图标,并显示带有灰色背景的android圆形徽标的默认屏幕。

theme.xml

<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.BaseMVVM" parent="Theme.MaterialComponents.DayNight.NoActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_500</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/white</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>

</style>
</resources>

Splash.xml

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools">
<style name="Theme.BaseMVVM.Initial" parent="Theme.SplashScreen">
<item name="android:windowSplashScreenBackground" tools:targetApi="s">@color/teal_200</item>
<item name="android:windowSplashScreenAnimatedIcon" tools:targetApi="s">@drawable/ic_baseline_article_24</item>
<item name="android:windowSplashScreenBrandingImage" tools:targetApi="s">@drawable/ic_baseline_article_24</item>
<item name="postSplashScreenTheme">@style/Theme.BaseMVVM</item>
</style>
</resources>

半月板:

<activity
android:theme="@style/Theme.BaseMVVM.Initial"
android:name=".SplashActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

启动活动:

class SplashActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
val splashScreen = installSplashScreen()
super.onCreate(savedInstanceState)
splashScreen.setKeepOnScreenCondition { true }
lifecycleScope.launchWhenCreated {
delay(2000)
gotoHomeActivity()
}
}

我能够通过在Splash.xml项目中添加android命名空间来重现这个问题,这使得它仅针对android 12及更高版本。

<item name="android:windowSplashScreenBackground" tools:targetApi="s">@color/teal_200</item>
<item name="android:windowSplashScreenAnimatedIcon" tools:targetApi="s">@drawable/ic_baseline_article_24</item>
<item name="android:windowSplashScreenBrandingImage" tools:targetApi="s">@drawable/ic_baseline_article_24</item>

当使用android属性时,较低级别的android将无法使用启动屏幕。要使用Compatibility API,请省略项目的android属性,并按如下方式使用:

<item name="windowSplashScreenBackground" >@color/teal_200</item>
<item name="windowSplashScreenAnimatedIcon" >@drawable/ic_baseline_article_24</item>
<item name="windowSplashScreenBrandingImage" >@drawable/ic_baseline_article_24</item>

Android文档也有指南

最新更新