android - 有没有办法根据应用程序主题更改初始屏幕颜色?

标签 android flutter themes splash-screen

能否以编程方式更改原生 android 初始屏幕颜色,以便将其设置为适合 Flutter 应用程序选择的主题?

有点像当系统主题设置为深色时,WhatsApp 启动画面如何在深色主题中加载。

深色和浅色 WhatsApp 闪屏:

Dark and light WhatsApp splash screen

我猜这使用了两个主题作为启动屏幕,它们与系统主题相关联,但我不太了解如何以及是否可能。

所以问题是:是否可以在运行 Flutter 应用程序时更改启动画面的颜色/主题,以便在应用程序的下一次启动时,原生 android 启动画面以与 Flutter 应用程序相同的主题加载?

(对不起,如果我重复了很多次,但我想尽可能好地描述我的要求)

最佳答案

在您的项目文件夹的 android/app/src/main/res 中应该有 drawable文件夹,其中包含 launch_background.xml用于轻主题。复制此文件夹并调用第二个 drawable-night并配置深色主题样式。它将根据 Android 的系统主题自动更改。launch_background.xmldrawable (轻主题)文件夹可以这样构造,以显示具有白色背景的图像:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@android:color/white" />
    <item>
        <bitmap
            android:gravity="center"
            android:src="@drawable/launch_image" />
    </item>
</layer-list>
launch_background.xml 中也可以这样做。在 drawable-night (深色主题)文件夹,替换 "@android:color/white""@android:color/black"为黑色背景。
请注意,图像必须在 drawable 内和 drawable-night分别使用的文件夹。据我所知,格式必须是png。
我找到了this useful article解决并解释 native 闪屏主题。

关于android - 有没有办法根据应用程序主题更改初始屏幕颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60340879/

相关文章:

java - 如何将微调器的值放入不同的 fragment 中?

用户更改后的 Android 插件和工具包配置

android-studio - 如何在 Android Studio 或 Visual Studio Code 中查找未使用的 Flutter 类

flutter - AlertDialog无法关闭Flutter

angularjs - 将 Angular 4 与外部 Bootstrap HTML 模板集成

android - 如何在 Android 的游标适配器中获取 bindView 中的 View 尺寸?

java - fragment_main.xml和activity_main.xml之间的区别

flutter - 如何告诉Flutter在我的Flutter短信应用中,仅输入SPACE应该被视为null?

themes - 如何提高 Material 主题中行号的可见性?

jquery-mobile - 动态更改 jquery 移动色板