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

Arf*_*ann 5 android android-theme android-night-mode

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

问题是品牌启动。我有 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>
Run Code Online (Sandbox Code Playgroud)

还有光:

 <?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>
Run Code Online (Sandbox Code Playgroud)

为了使用品牌发布,我添加了以下内容:

android:theme="@style/AppTheme.BrandedLaunchLight"
Run Code Online (Sandbox Code Playgroud)

在我的AndroidManifest.xml

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

Gab*_*tti 9

只需在您的应用程序中使用DayNight主题(Theme.MaterialComponents.DayNightTheme.AppCompat.DayNight)。然后在资源文件夹上
使用-night限定符drawable-nightas和values-night

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

笔记。查看官方文档

启动屏幕

如果您的应用程序具有自定义启动屏幕,则可能需要对其进行修改以反映所选主题。

删除任何硬编码颜色,例如任何指向的背景颜色可能是白色。请改用?android:attr/colorBackgroundtheme 属性

请注意,深色主题的可 android:windowBackground绘制对象仅适用于 Android Q