在開發中,咱們在啓動app的時候,屏幕會出現一段時間的白屏或者黑屏,不一樣設備時間長短不一樣。很影響用戶體驗。
首先分析一下,產生這個現象的緣由,當咱們在啓動一個應用時,系統會去檢查是否已經存在這樣一個進程,若是不存在,就是冷啓動。系統和APP自己都有不少工做須要處理。首先系統的服務會先檢查startActivity中的intent的信息,而後在去建立進程,最後纔是執行啓動Acitivy的操做。而咱們上面提到的顯示白黑屏的問題,就是在這段時間內產生的。android
系統在繪製頁面加載佈局以前,首先會初始化窗口(Window),而在進行這一步操做時,系統會根據咱們設置的Theme來指定它的Theme 主題顏色,Window 佈局的頂層時DecorView,StartingWindow顯示一個空DecorView,咱們在Style中的設置就決定了顯示的是白屏仍是黑屏。app
最簡單的解決方法
既然黑白屏是根據咱們設置的Theme來決定的,那咱們就能夠直接從啓動頁的Theme入手,解決這個問題。佈局
第一步:在style文件中定義以下ui
<!--***************啓動頁Theme***************--> <style name="Theme.Splash" parent="Theme.AppCompat.Light.NoActionBar"> <item name="windowNoTitle">true</item> <item name="android:windowContentOverlay">@null</item> <item name="android:windowBackground">@drawable/splash_pic</item> <item name="android:windowFullscreen">true</item> </style>
第一步:在AndroidManifest中設置啓動頁Themespa
<activity android:name=".ui.SplashActivity" android:theme="@style/Theme.Splash" android:screenOrientation="portrait"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
如上,咱們給啓動頁設置一個全屏的背景圖片,這樣就不用顯示默認的主題顏色了。
按照以上配置,這樣就能避免白屏或者黑屏問題了。code