美文网首页UI一步一步性能优化
APP性能优化--启动黑白屏体验优化

APP性能优化--启动黑白屏体验优化

作者: 初夏的雪 | 来源:发表于2020-10-30 15:18 被阅读0次
    相信做app的每个人都遇到过,自己的app在启动的时候,会出现白色或黑色的屏幕,然后过几秒后,正常进入应用。这个不影响用户使用,但是体验不是那么的友好,那这个该如何解决会更友好呢?下面进入正题
    

    1.为什么会出现黑白屏呢?

    当我们点击桌面图标时,系统会进行zygote一个应用进程、应用的初始化等一系列工作,这些都是需要耗时的。那么这段时间内,用户会觉得“延迟”响应(或卡顿),为了解决这个问题,google就默认启动一个空白的页面,以便响应用户操作。

    如果你的应用application 或者launcher activity 启动比较慢,比较耗时,没有将系统的backgroundWindow替换掉,就会出现了黑白屏。那么这个黑白屏到底是黑色还是白色,取决于你选择的应用的Theme ,如果是Dark 就是黑色,反之Light 就是白色。

    2.优化方案

    很多app都采用修改Theme的方式来优化这个黑白屏的体验。(以图片为例)

    2.1 准备图片(welcome_logo.png为你想展示的内容)

    welcome_logo.png

    2.2 新建一个展示图片的drawable 文件(welcome_bg.xml)

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/white"/>
        <item>
            <bitmap
                android:gravity="center"
                android:scaleType="centerCrop"
                android:src="@drawable/welcome_logo"></bitmap>
        </item>
    </layer-list>
    

    注:此处也可以修改成动画等其他效果的。

    2.3 自定义Theme

    在styles.xml中添加自定义的Theme,如下:

    <style name="AppTheme.Launcher">
            <item name="android:windowBackground">@drawable/welcome_bg</item>
            <item name="android:windowFullscreen">true</item>
        </style>
    

    注意:上面的drawable ,为第二步自定义的图片drawable

    2.4 引用自定义的Theme

    <activity
                android:name=".LoginActivity"
                android:launchMode="singleTask"
                android:screenOrientation="portrait"
                android:theme="@style/AppTheme.Launcher">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
    
            </activity>
    

    2.5 最重要的一步

    在上一步将启动页面的Theme 设置为我们自定义的了,那么启动结束后是不是需要修改回来呢?那是必须的。

    重要的事情说三遍
    重要的事情说三遍
    重要的事情说三遍

    在Launcher Activity的onCreate(Bundle savedInstanceState)方法调用super.onCreate();之前使用setTheme()来修改回去。

     @Override
        protected final void onCreate(Bundle savedInstanceState) {
         setTheme(R.style.Activity_Translate_anim);
            super.onCreate(savedInstanceState);
            mDataBinding = DataBindingUtil.setContentView(this, getLayoutResId());
    }
    

    好了完成上述步骤,就可以实现启动体验优化了,但是这只是其中一个方案,有更好的方案,欢迎留言。

    相关文章

      网友评论

        本文标题:APP性能优化--启动黑白屏体验优化

        本文链接:https://www.haomeiwen.com/subject/ikrdvktx.html