開發(fā)項目中遇到黑白屏涩惑,然后就記錄下來啦仁期。。竭恬。蟀拷。
我們在啟動app的時候,屏幕會出現(xiàn)一段時間的白屏或者黑屏萍聊,所以這個效果很影響用戶體驗。
那出現(xiàn)這個黑白屏的現(xiàn)象的原理是什么啦悦析? 知道問題所在然后才好對癥下藥的寿桨。
原因:(借用一個大佬說的)產(chǎn)生這個現(xiàn)象的原因,當(dāng)我們在啟動一個應(yīng)用時强戴,系統(tǒng)會去檢查是否已經(jīng)存在這樣一個進(jìn)程亭螟,如果不存在,就是冷啟動骑歹。系統(tǒng)和APP本身都有很多工作需要處理预烙。首先系統(tǒng)的服務(wù)會先檢查startActivity中的intent的信息,然后在去創(chuàng)建進(jìn)程道媚,最后才是執(zhí)行啟動Acitivy的操作扁掸。而我們上面提到的顯示白黑屏的問題,就是在這段時間內(nèi)產(chǎn)生的最域。
系統(tǒng)在繪制頁面加載布局之前谴分,首先會初始化窗口(Window),而在進(jìn)行這一步操作時,系統(tǒng)會根據(jù)我們設(shè)置的Theme來指定它的Theme 主題顏色镀脂,Window 布局的頂層時DecorView,StartingWindow顯示一個空DecorView牺蹄,我們在Style中的設(shè)置就決定了顯示的是白屏還是黑屏。
發(fā)現(xiàn)問題所在:那我在 在清單文件?在AndroidManifest文件中設(shè)置: 修改Stlyle 樣式:
?出現(xiàn)白屏系統(tǒng)默認(rèn)的背景顏色是白色的 還有 黑色?
<!--***************默認(rèn)樣式***************-->
? ? <!-- 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>
? ? </style>
所以可以自定義? Stlyle 的樣式? :
1? 將啟動的 白屏替換為 自定義的圖片
相對應(yīng)的啟動頁
這樣黑白屏的問題就處理啦薄翅。
那么:Window 布局的頂層時DecorView,StartingWindow顯示一個空DecorView沙兰,那我們可以關(guān)閉這個嗎?當(dāng)然是可以的翘魄。
當(dāng)這樣做流暢性不是很好的鼎天,還是推薦使用第一種,自定義樣式 winddowbackground 使用 背景圖片 和 xml 布局都是可以的熟丸。