真正解决App启动时白屏/黑屏

2018-08-07  本文已影响124人  我想吃碗牛肉面

背景
过去点击App图标时,App启动时总会出现短暂的白屏/黑屏,这是一个非常不好的体验,下来我们就一起来解决这个问题。

为什么
在点击App图标后,系统会首先加载AndroidManifest.xml里Activity所指定的Theme,不会那么快加载Activity里面的onCreate()方法,所以也不会那么快执行setContentView(),所以才会出现白屏/黑屏现象。

如何操作
知道这个就好办,我们只要设置好第一个Activity的Theme里的以下属性即可:

<item name="android:windowBackground">@drawable/main_window_bg</item>

main_window_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 android:top="@dimen/splash_icon_margin_top">
        <bitmap
            android:gravity="center|top"
            android:src="@drawable/ic_main_logo"/>
    </item>
</layer-list>

然后我们就会发现,成功了,白黑屏不见了,取而代之的是:


image.png

那么同学还想在该页面底部显示文字图片,例如一下版本信息,图片好办,直接在layer-list里添加item即可,如果想显示文字,而且还要获取要App的版本号,那么只能等待Activity加载。我们可以将Activity的Layout设置为透明,如以下布局。

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:background="@android:color/transparent">

    <TextView
        android:id="@+id/tv_copy_right"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:layout_marginBottom="@dimen/splash_version_info_margin_bottom"
        android:gravity="center"
        android:textColor="#c7c7c7"
        android:textSize="13sp"/>

</FrameLayout>

</article>

上一篇下一篇

猜你喜欢

热点阅读