Android 在主题为深色时更改品牌启动背景颜色

Android Change branded launch background colors when theme is dark

我在我的应用程序中实现了深色主题。一切正常,当系统处于暗模式时,应用程序处于暗模式,反之亦然。

问题是品牌 Launch.I 有 2 个可绘制文件:

深色:

<?xml version="1.0" encoding="utf-8"?>

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" android:opacity="opaque">

    <item android:drawable="@color/splashColorDark"/>

    <item>

        <bitmap
                android:src="@drawable/logo_branded"
                android:mipMap="true"
                android:gravity="center"/>

    </item>

</layer-list>

和光:

 <?xml version="1.0" encoding="utf-8"?>

    <layer-list xmlns:android="http://schemas.android.com/apk/res/android" android:opacity="opaque">

        <item android:drawable="@color/splashColorLight"/>

        <item>

            <bitmap
                    android:src="@drawable/logo_branded"
                    android:mipMap="true"
                    android:gravity="center"/>

        </item>

    </layer-list>

为了使用品牌发布,我添加了这个:

android:theme="@style/AppTheme.BrandedLaunchLight"

在我的 AndroidManifest.xml

这样做显然无法在暗模式处于活动状态时设置暗品牌启动。我该怎么办?

只需在您的应用中使用 DayNight 主题(Theme.MaterialComponents.DayNightTheme.AppCompat.DayNight)。
然后在资源文件夹中使用 -night qualifier 作为 drawable-nightvalues-night.

这意味着在深色和浅色主题的品牌发布中为您的绘图使用相同的名称,但使用 drawable-nightdrawable 文件夹。
你可以对颜色做同样的事情。不要使用 @color/splashColorDark@color/splashColorLight,而是使用单个名称 splashColor 并将其放在 values-night\colors.xmlvalues\colors.xml

。检查 official documentation:

Launch screens

If your app has a custom launch screen, it may need to be modified so that it reflects the selected theme.

Remove any hardcoded colors, for example any background colors pointing may be white. Use the ?android:attr/colorBackground theme attribute instead.

Note that dark-themed android:windowBackground drawables only work on Android Q.