1. 程式人生 > >Android啟動白屏問題完美解決

Android啟動白屏問題完美解決

在開發過程中我們經常會遇到點選啟動App的時候有短暫的白屏出現,怎麼避免這種情況呢?提供倆種解決思路

1、設定透明的介面來完成

在你的style裡面加這倆行程式碼

<item name="android:windowIsTranslucent">true</item>
<item name="android:windowNoTitle">true</item>

完整的示例如下

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <!-- 設定透明介面 -->
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowNoTitle">true</item>
</style>

這種方式有一個弊端,當你App做的很大的時候點選啟動時總感覺是啟動的很慢,其實不是這樣的,而是啟動的時候透明瞭,所以感覺是啟動的慢

2、把白屏換成一張過度的圖片

在你的style裡面加這倆行程式碼

<item name="android:windowBackground">@mipmap/ic_launcher</item>
<item name="android:windowNoTitle">true</item>

完整的示例如下

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <!-- 過度圖片 -->
    <item name="android:windowBackground">@mipmap/ic_launcher</item>
    <item name="android:windowNoTitle">true</item>
</style>

這種方式會使你的App一直有這個圖片背景在顯示,不是我們想要的結果,所以我們在Activity中重寫一個生命週期中介面載入完成後的回撥方法,將背景顏色改為白色

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    //修改背景為白色
    getWindow().setBackgroundDrawable(new ColorDrawable(Color.WHITE));
}

這種方式可以解決App啟動白屏的問題,但是啟動背景顯示的時間太短,不像一般App那樣歡迎頁顯示幾秒後跳轉,所以建議還是做一個歡迎頁比較好,能有效的避免白屏問題還能做廣告,但是如果公司產品大大不讓做歡迎頁那就沒辦法啦,只能採用這倆種方法來避免這個問題了