3

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

问题是 Branded Launch。我有 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

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

4

1 回答 1

4

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

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

注意。查看官方文档

启动屏幕

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

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

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

于 2019-11-16T16:10:37.947 回答