相信做app的每個人都遇到過,自己的app在啟動的時候,會出現(xiàn)白色或黑色的屏幕,然后過幾秒后,正常進(jìn)入應(yīng)用。這個不影響用戶使用,但是體驗不是那么的友好,那這個該如何解決會更友好呢?下面進(jìn)入正題
1.為什么會出現(xiàn)黑白屏呢?
當(dāng)我們點擊桌面圖標(biāo)時,系統(tǒng)會進(jìn)行zygote一個應(yīng)用進(jìn)程、應(yīng)用的初始化等一系列工作,這些都是需要耗時的。那么這段時間內(nèi),用戶會覺得“延遲”響應(yīng)(或卡頓),為了解決這個問題,google就默認(rèn)啟動一個空白的頁面,以便響應(yīng)用戶操作。
如果你的應(yīng)用application 或者launcher activity 啟動比較慢,比較耗時,沒有將系統(tǒng)的backgroundWindow替換掉,就會出現(xiàn)了黑白屏。那么這個黑白屏到底是黑色還是白色,取決于你選擇的應(yīng)用的Theme ,如果是Dark 就是黑色,反之Light 就是白色。
2.優(yōu)化方案
很多app都采用修改Theme的方式來優(yōu)化這個黑白屏的體驗。(以圖片為例)
2.1 準(zhǔn)備圖片(welcome_logo.png為你想展示的內(nèi)容)

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 設(shè)置為我們自定義的了,那么啟動結(jié)束后是不是需要修改回來呢?那是必須的。
重要的事情說三遍
重要的事情說三遍
重要的事情說三遍
在Launcher Activity的onCreate(Bundle savedInstanceState)方法調(diào)用super.onCreate();之前使用setTheme()來修改回去。
@Override
protected final void onCreate(Bundle savedInstanceState) {
setTheme(R.style.Activity_Translate_anim);
super.onCreate(savedInstanceState);
mDataBinding = DataBindingUtil.setContentView(this, getLayoutResId());
}
好了完成上述步驟,就可以實現(xiàn)啟動體驗優(yōu)化了,但是這只是其中一個方案,有更好的方案,歡迎留言。