我們在打開一個APP時,肯定希望它能夠快速響應,然後快速啓動。而當我們首次啓動APP時,再到APP的第一個頁面展示出來之前,這段時間會有幾秒的白屏或者是黑屏出現。這樣給用戶的體驗是十分不好的。
之所以會出現這種情況,是因爲當我們在啓動一個應用時,系統會檢查是否已經存在這樣一個進程,如果沒有,Android系統會創建出一個新的進程分配給該應用,之後會依次創建和初始化Application類、然後啓動SplashActivity類的。而顯示白黑屏的問題就是在這段時間內產生的。
系統會在繪製頁面加載佈局之前 ,首先會初始化窗口(Window),而在進行這步操作時,系統會根據我們設置的Theme來指定它的Theme主題顏色。Window佈局的頂層是DecorView,StartingWindow顯示一個空的DecorView,進而我們在Style中的設置就決定了顯示的是白屏還是黑屏。
解決方法:
在應用要啓動的第一個頁面(即應用的啓動頁)中設置一個單獨的Theme主題。
<activity
android:name=".ui.SplashActivity"
android:theme="@style/SplashTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
上面代碼中的android:theme="@style/SplashTheme"
指定了你的啓動頁的主題。
代碼如下:
<!--歡迎界面主題-->
<style name="SplashTheme" parent="AppTheme">
<item name="android:windowBackground">@drawable/splash_speed</item>
</style>
到此APP啓動時白屏的問題就搞定了!