Flutter 首屏优化
2018-12-13 本文已影响190人
iwakevin
Android App 一般在启动的时候会出现白屏、黑屏,持续 0.5s - 3s (看 App 启动加载复杂度 与 手机性能)。
其主要的原因是默认的 Andraid App 是没有设置启动图的。在启动的时候,Andraid App 需要加载各种资源,包括创建 Activity 等。
如果第一个Activity,还没创建完成,就会看到白屏、黑屏,一般解决这个问题就是为 Andraid App 设置一个启动图。就像淘宝 App 那样,启动的时候会看到一张关于淘宝的图片。
而 iOS App 默认设置了启动图,就不会像 Android App 那样出现白屏、黑屏。
在打开 Flutter App 时会出现短暂的白屏现象(Android),这并不是 Flutter 的特例,在 React Native 上同样如此。因此在 React Native 上解决白屏的处理方式与 Flutter 类似。
添加启动图
在 xml 里,添加启动图。当 App 打开时会先看到启动图,接着渲染 Flutter 所管理的 Activity。
首先在 android/app/src/main/res/drawable-hdpi
里加上一个图片作为程序启动图(名称随意,例如:bg.png),然后修改 android/app/src/main/res/values/styles.xml
。
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- 这里将刚刚那张图片设置为背景图片, bg对应图片名称 -->
<item name="android:windowBackground">@drawable/bg</item>
</style>
或者,在 android\app\src\main\res\drawable\launch_background.xml
里添加,也行。
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" />
<!-- You can insert your own image assets here -->
<item>
<bitmap
android:gravity="center"
android:src="@mipmap/bg" />
</item>
</layer-list>
最后,记得在 Flutter 底端页面上设置背景为非透明。
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text('应用'),
),
body: new Container(
color: Colors.white,
),
);
}