真正解决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>