应用程序在处理主题后忽略 windowSplashScreenBackground

问题描述 投票:0回答:1

我使用 API 进行了非常简单的启动,背景设置正确。然后我开始研究主题并修复错误,当我完成后,应用程序图标仍然显示一个具有正确背景的圆角正方形,但飞溅是白色或黑色的,它也对夜间模式做出反应,而它应该是始终保留其品牌颜色。

这是我的

theme.mxl
文件,我在其中定义了两个主题和启动画面

<resources xmlns:tools="http://schemas.android.com/tools">
    <!-- Base Chalkboard Theme. -->
    <style name="Theme.Base.Chalkboard" parent="Theme.Material3.DayNight.NoActionBar">
        <item name="android:background">@color/chalkboard_backgroundColor</item>
        <item name="android:textColor">@color/chalkboard_textColor</item>
        <item name="android:tint">@color/chalkboard_tintColor</item>
        <item name="android:fontFamily">@font/open_sans</item>

        <item name="colorAccent1">@color/chalkboard_colorAcent1</item>
        <item name="colorAccent2">@color/chalkboard_colorAcent2</item>

    </style>

    <!-- Base Corporate Theme. -->
    <style name="Theme.Base.Corporate" parent="Theme.Material3.DayNight.NoActionBar">
        <item name="android:background">@color/corporate_backgroundColor</item>
        <item name="android:textColor">@color/corporate_textColor</item>
        <item name="android:tint">@color/corporate_tintColor</item>
        <item name="android:fontFamily">@font/open_sans</item>

        <item name="android:textColorPrimaryDisableOnly">@color/corporate_textColor</item>
        <item name="android:textColorAlertDialogListItem">@color/corporate_textColor</item>

        <item name="colorAccent1">@color/corporate_colorAcent1</item>
        <item name="colorAccent2">@color/corporate_colorAcent2</item>
    </style>

    <!-- Base splash theme -->
    <style name="Theme.Splash" parent="Theme.Material3.DayNight.NoActionBar">
        <item name="windowSplashScreenBackground">@color/royal_blue</item>
        <item name="windowSplashScreenAnimatedIcon">@mipmap/ic_launcher</item>
        <item name="windowSplashScreenAnimationDuration">200</item>
        <item name="postSplashScreenTheme">@style/Theme.Base.Chalkboard</item>
    </style>
</resources>

这就是我在我的

MainActivity
内调用启动屏幕的方式,这部分没有改变:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // Handle the splash screen transition.
        long delay = 578L;
        SplashScreen splashScreen = SplashScreen.installSplashScreen(this);
        splashScreen.setKeepOnScreenCondition(() -> keepSplashOnScreen);
        new Handler(Looper.getMainLooper()).postDelayed(() -> keepSplashOnScreen = false, delay);

我的应用程序主题是

Theme.Splash
,而每个活动都使用
Theme.Base.Chalkboard
,如果用户在设置中选择了此主题,则该主题将替换为
Theme.Base.Corporate

我尝试重新创建

mipmap
图标,使用
SVG
PNG
作为尝试某些内容的源,由于我的目标是 Android 10Q 及更高版本的设备,因此我已禁用旧图标。我不知道要测试什么。评论我的主题并没有解决问题。我特别担心
android:background
设置。

android android-theme android-splashscreen
1个回答
0
投票

Theme.Splash
的父主题错误。这应该是:

<style name="Theme.Base.SplashScreen" parent="Theme.SplashScreen" tools:targetApi="s">
    ...
</style>
© www.soinside.com 2019 - 2024. All rights reserved.