RN And FlutterflutterFlutter

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,
        ),
    );
}
上一篇下一篇

猜你喜欢

热点阅读