Flutter仿Boss-1.启动黑白屏问题

简述

在使用Flutter开发App应用时,运行在Android手机启动时可能会遇到应用显示黑白屏的问题。这个问题做过Android开发的人员都知道,在Android12版本兼容中新增改用SplashScreen API定制系统启动画面,但是本文将介绍如何通过调整启动样式配置解决这个问题。

效果

  • 未修改
  • 修改后

启动样式配置

在 Flutter 项目中,启动屏幕的配置文件位于 drawable 文件夹中的 launch_background.xml。以下是一个示例配置:

xml 复制代码
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape>
            <solid android:color="#40C2BB" />
        </shape>
    </item>

    <item android:top="150dp">
        <bitmap
            android:gravity="top|center_horizontal"
            android:src="@drawable/splash_top_icon" />
    </item>
    <item
        android:gravity="bottom|center_horizontal"
        android:bottom="50dp">
        <bitmap
            android:gravity="center"
            android:src="@drawable/splash_bottom" />
    </item>
</layer-list>

请注意,这里的配置文件决定了启动时的主题样式,包括背景颜色和图标等。在这个例子中,背景颜色为 #40C2BB,顶部图标为 splash_top_icon,底部图标为 splash_bottom

修改启动屏幕样式

styles.xml 文件中修改 LaunchTheme 样式,确保正确引用了启动屏幕配置文件:

xml 复制代码
<style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
    <item name="android:windowBackground">@drawable/launch_background</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowContentOverlay">@null</item>
</style>

这里通过 android:windowBackground 指定了启动屏幕的背景,确保其引用了我们之前配置的 launch_background.xml 文件。

修改 AndroidManifest.xml

AndroidManifest.xml 文件中,确保正确引用了修改后的样式:

xml 复制代码
<activity
    android:name=".MainActivity"
    android:theme="@style/LaunchTheme">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

通过修改 android:theme 属性,确保启动时使用了我们修改后的样式。

结论

通过以上步骤,我们可以解决 Flutter 在 Android 平台启动时出现黑白屏的问题。通过正确配置启动屏幕样式,并确保在 styles.xmlAndroidManifest.xml 中正确引用,我们可以让应用在启动时呈现出预期的样式,提升用户体验。

Github

github.com/yixiaolunhui/flutter_project

相关推荐
逍遥咸鱼2 小时前
Flutter文本框添加图片表情(粗制滥造版)
flutter
程序员老刘3 小时前
Flutter 官方Skill发布,对开发者意味着什么?
flutter·ai编程·客户端
血色橄榄枝4 小时前
20 Flutter for OpenHarmony 动画效果
flutter·开源·鸿蒙
Swift社区5 小时前
Flutter 项目如何做好性能监控与问题定位?
flutter
LawrenceLan5 小时前
36.Flutter 零基础入门(三十六):StatefulWidget 与 setState 进阶 —— 动态页面必学
开发语言·前端·flutter·dart
weixin_443478515 小时前
flutter组件学习之Stack 组件详解
学习·flutter
程序员Ctrl喵5 小时前
分层架构的协同艺术——解构 Flutter 的心脏
flutter·架构
Hello.Reader6 小时前
Flutter IM 桌面端消息发送、ACK 回执、SQLite 本地缓存与断线重连设计
flutter·缓存·sqlite
Hello.Reader6 小时前
Flutter IM 桌面端项目架构、聊天窗口布局与 WebSocket 长连接设计
websocket·flutter·架构
前端不太难6 小时前
Flutter Web / Desktop 为什么“能跑但不好用”?
前端·flutter·状态模式