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

     2023-02-23     144

关键词:

【中文标题】有没有办法根据应用程序主题更改初始屏幕颜色?【英文标题】:Is there a way to change the splash screen color based on the Apps theme? 【发布时间】:2020-06-06 00:21:31 【问题描述】:

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

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

深色和浅色 WhatsApp 闪屏:

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

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

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

【问题讨论】:

【参考方案1】:

在您的项目文件夹的android/app/src/main/res 中应该有一个drawable 文件夹,其中包含用于浅色主题的launch_background.xml。复制这个文件夹并调用第二个drawable-night 并配置深色主题样式。它会根据Android的系统主题自动变化。

drawable(浅色主题)文件夹中的launch_background.xml 可以这样构造,以显示具有白色背景的图像:

<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>

同样可以在drawable-night(深色主题)文件夹中的launch_background.xml 中完成,将"@android:color/white" 替换为"@android:color/black" 以获得黑色背景。

请注意,图像必须分别位于正在使用的 drawabledrawable-night 文件夹中。据我所知,格式必须是png。

我发现 this useful article 解决并解释了原生闪屏主题。

【讨论】:

我最初想仅根据应用程序的主题(独立于系统主题)更改启动画面,但看起来这是不可能的。这是下一个最好的事情。谢谢! 您介意在这里分享代码而不是参考文章吗?该链接将来可能会被删除。 完成,我添加了 xml 代码以及文章中的一些基本信息。 有什么方法可以根据用户偏好而不是系统设置来更改此设置?我是android开发的新手,所以问 Flutter 在 android 应用程序完全加载后开始绘图,因此您将无法使用 Flutter 执行此操作,您必须使用本机代码。您可能必须将用户的偏好存储在设备上,并在应用启动时读取它(并显示相应的初始屏幕)。【参考方案2】:

如果您从 Android 文件夹 xml 文件中设置启动画面,那么我猜您无法逃避编写一些本机代码并将一些主题逻辑放在 Android 子文件夹中。另一方面,如果主题逻辑和闪屏都在main.dart 文件中。然后你可以只存储你想要使用的两个不同的 splashscreens 并添加一些 if-else 语句来显示启动屏幕并保存用户主题偏好。如果您不知道如何执行此操作,可以关注此线程: How to load theme at beginning in fluttter

【讨论】:

是的,它必须是一些原生的东西,因为我想使用原生闪屏。您对如何执行此操作或我应该看哪里有任何想法?【参考方案3】:

您可以使用某种SharedPreferences 来保存主题的当前状态。然后根据您的Shared Preferences 中保存的值将所需的主题返回到MaterialApp。我个人使用HydratedBloc 包来保存我的应用程序的当前状态,包括主题。

【讨论】:

但是在任何 Flutter 代码运行之前都会显示启动画面。 嘿,flutter 应用程序在 android 加载后启动,您的答案仅说明如何在 flutter 启动后启用深色主题,不回答 og 问题

Flutter Forms:有没有办法根据某些条件更改输入文本的颜色?

】FlutterForms:有没有办法根据某些条件更改输入文本的颜色?【英文标题】:FlutterForms:Isthereawaytochangethecoloroftheinputtextbasedonsomecondition?【发布时间】:2020-09-1016:52:27【问题描述】:有没有办法根据某些条件更改输入文本的颜色?... 查看详情

在 React Native 中,有没有办法根据数据库中的布尔值更改按钮的颜色?

】在ReactNative中,有没有办法根据数据库中的布尔值更改按钮的颜色?【英文标题】:InReactNative,isthereawaytochangethecolorofthebuttonbasedonabooleanfromadatabase?【发布时间】:2022-01-0704:12:21【问题描述】:所以,我是React-Native的字面新手,... 查看详情

更改状态栏色调颜色

...中,状态栏会返回其原始颜色。如何更改状态栏色调以在应用程序中持续存在?【问题讨论】:【参考方案1】:在iOS5中没有办法。你可以改变你的栏样式。但是如果你看看新的WWDC2 查看详情

android studio中的任何视图都会根据设备默认主题更改背景颜色

...【问题描述】:每当我在暗模式下在真实设备上运行我的应用程序时,我在xml中的视图颜色会自动更改,但每当我在亮模式下使用应用程序时它们都会相同我怎样才能避免这种情 查看详情

根据当前查看的页面更改 AppBar 的颜色和文本

...017-07-2612:36:44【问题描述】:我有一个TabBarView可以在我的应用程序的页面之间导航。有没有办法根据当前查看的页面更改/覆盖主AppBar的文本和颜色,而不是为每个页面分别创建一个AppBar?这就是我的页面的设置方式 查看详情

如何根据设置的主题更改颤动中的状态栏图标和文本颜色?

】如何根据设置的主题更改颤动中的状态栏图标和文本颜色?【英文标题】:Howtochangestatusbariconandtextcolorinflutterbasedonthemebeenset?【发布时间】:2020-01-1914:05:23【问题描述】:如何在没有任何第三方插件的情况下更新状态栏图标的... 查看详情

需要帮助,更改活动主题后屏幕没有打开

...间】:2011-04-2819:10:45【问题描述】:我正在制作我的闹钟应用程序。有一个活动来显示警报信息。我想打开屏幕并解锁它。我写了这些代码AlarmActivity.java:公共类AlarmActivity扩展Activity……无效onCreate(捆绑b 查看详情

有没有办法更改 Microsoft Access 中下拉列表的组合框按钮的颜色

】有没有办法更改MicrosoftAccess中下拉列表的组合框按钮的颜色【英文标题】:IsthereawaytochangethecolorofacomboboxButtonforthedropdownlistinMicrosoftAccess【发布时间】:2016-12-1802:29:52【问题描述】:我想知道是否有一种方法可以将组合框上的... 查看详情

如何根据主题更改状态栏/导航栏颜色/亮度?

】如何根据主题更改状态栏/导航栏颜色/亮度?【英文标题】:Howtochangestatusbar/navigationbarcolor/brightnesswithrespectivetotheme?【发布时间】:2022-01-2002:58:27【问题描述】:使用Getx进行主题化,但在根据浅色/深色主题更改状态栏图标亮... 查看详情

如何在 Flutter 中通过更改主题来更改文本颜色

...布时间】:2020-03-1912:22:57【问题描述】:我正在开发一个应用程序,它会根据系统的主题更改其主题数据,即如果用户为他的设备启用了暗模式,则应用程序将自动更改为暗模式,反之亦然。我想在这里也改变App的文字颜色。我... 查看详情

如何更改 VS 2010 中的轮廓悬停颜色?

...个屏幕都会闪烁白色(这是我自定义配色方案的结果)。有没有办法改变这种颜色?我不记得我制作主题时有一个。【问题讨论】:【参考方案1】:它是Tools-& 查看详情

在 Visual Studio 扩展中更改“颜色主题”

...描述】:我正在用C#编写一个VisualStudio扩展,我希望它会根据一天中的时间更改颜色主题(日落后将应用深色主题-日出时将应用蓝色/浅色主题,具体取决于用户偏好)。我可以使用ShellSetting 查看详情

根据队列等待时间更改代理颜色

...方法的问题是它可能会弄乱队列中代理的顺序。AnyLogic中有没有办法对此进行建模?谢谢。【问题讨论】:【 查看详情

如何根据设备主题更改collectionview单元格颜色(按照我的配色方案)

】如何根据设备主题更改collectionview单元格颜色(按照我的配色方案)【英文标题】:Howtochangecollectionviewcellscolorbasedondevicetheme(followingmycolorscheme)【发布时间】:2020-10-2815:27:08【问题描述】:概述:我正在使用集合视图构建键盘... 查看详情

如何根据深色/浅色主题更改布局背景图像?

...我有两张图片。我想这样做:当用户打开具有Light主题的应用程序时-第一个图像被用作布局的背景。当用户使用深色主题打开应用时-第二张图片将用作布局的背景。要解决这个文本颜色问题,我们可以使用style 查看详情

有没有办法根据 libreoffice 中的单元格颜色应用过滤器? [关闭]

】有没有办法根据libreoffice中的单元格颜色应用过滤器?[关闭]【英文标题】:Istheresomewaytoapplyfilterbasedoncellcolorinlibreoffice?[closed]【发布时间】:2021-04-2908:45:49【问题描述】:下面的答案不起作用。LibreOfficeCalc/OpenOfficeCalc:Howtofilter... 查看详情

有没有办法通过网页上的字符“中途”更改文本的颜色?

...发布时间】:2011-09-0915:55:27【问题描述】:我在一些桌面应用程序中看到的一件事是能够随着背景的变化而改变文本的颜色——有效地在单个字符上使用多种颜色。我在进度条中最常看到这种情况,进度条显示 查看详情

有没有办法通过网页上的字符“中途”更改文本的颜色?

...发布时间】:2011-09-0915:55:27【问题描述】:我在一些桌面应用程序中看到的一件事是能够随着背景的变化而改变文本的颜色——有效地在单个字符上使用多种颜色。我在进度条中最常看到这种情况,进度条显示 查看详情