Android啟動頁出現(xiàn)白屏、黑屏的解決方案
歷史原因
當系統(tǒng)啟動一個APP時,zygote進程會首先創(chuàng)建一個新的進程去運行這個APP,但是進程的創(chuàng)建是需要時間的,在創(chuàng)建完成之前,界面是呈現(xiàn)假死狀態(tài)的,這就很尷尬了,因為用戶會以為沒有點到APP而再次點擊,這極大的降低用戶體驗,Android需要及時做出反饋去避免這段迷之尷尬。于是系統(tǒng)根據(jù)你的manifest文件設置的主題顏色的不同來展示一個白屏或者黑屏。而這個黑(白)屏正式的稱呼應該是Preview Window,即預覽窗口。
好了,現(xiàn)在我們明白了,Preview Window其實是為了提高用戶體驗而有意設定的。因此,其實如果不是強迫癥,它可能并不是一個問題。
但是我猜大部分小伙伴應該是和我一樣的強迫癥患者:這么丑的黑屏怎么能出現(xiàn)在我的APP上呢????。?!
所以,下面我們就來聊聊這個問題的解決方案。
引言
目前app的設計思路,都會有一個啟動頁,來進行一些數(shù)據(jù)的初始化等一些比較耗時的操作,這就會造成啟動頁短暫的白屏或者黑屏(黑還是白取決于你的默認主題)。那么,如何解決這種問題的?今天介紹一種比較完美的解決方案:layer_list疊加層。
如果你的啟動頁,是一張靜態(tài)圖片,那么這種方式非常適合你。
一般來說,啟動頁都不會很花哨,標準的都是一個logo+app名字,上下排列。類似于下圖:

QQ音樂啟動頁
如果是這樣的,那就是最簡單的,找UI切幾張logo+文字的圖,按照x xx xxx放好,然后drawable文件夾中新建一個layer_splash.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:src="@drawable/icon_welcome" android:scaleType="center" /> </item> </layer-list>
然后在你的清單文件中,給啟動頁Activity單獨設置一個主題:SplashAppTheme,并在其中引用剛才新建的疊加層布局文件,大功告成!這種方式可以做到秒開,無需任何等待。
<style name="SplashAppTheme" parent="android:Theme"> <item name="android:windowNoTitle">true</item> <item name="android:windowFullscreen">true</item> <item name="android:windowBackground">@drawable/layer_splash</item> </style>
但是,如果你的啟動頁不是這種布局,而是類似于下圖這種:

微博
上下布局,間隔較大,而且上下之間的布局不固定(根據(jù)機型屏幕大小自動適應),這種,該如何處理呢?UI妹紙又要求不能等比例放大顯示,說那樣很丑吧啦吧啦吧。。。
其實我們可以這樣:把上下布局切開,然后就變成了這樣:

splash_top

splash_bottom
我們的xml文件這樣寫:
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 整體的背景顏色 --> <item> <color android:color="@color/white" /> </item> <!-- 頂部 --> <item> <bitmap android:gravity="top|center_horizontal" android:scaleType="center" android:src="@drawable/splash_top" /> </item> <!-- 底部 --> <item> <bitmap android:gravity="bottom|center_horizontal" android:scaleType="center" android:src="@drawable/splash_bottom" /> </item> </layer-list>
記得top 和 bottom要根據(jù)不同尺寸的啟動頁圖片進行切割,這樣就完美解決了各種分辨率屏幕的適配問題(包括平板)。
如果你的啟動頁比較簡潔,和我說的這兩種情況差不多,你完全可以不給啟動頁Activity設置布局文件(setContentView()),只使用疊加層作為布局顯示。
如果你的app啟動頁比較花哨或者不規(guī)則,你也可以利用這種方式,增加一個比較簡潔的app啟動圖片的疊加層布局,作為啟動頁的主題進行加載,啟動初始化完了再進行頁面的變化等操作,也可做到秒啟動,不再忍受白屏或者黑屏。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
- Android實現(xiàn)啟動頁倒計時效果
- Android 啟動頁白屏解決方案
- 完美解決Android App啟動頁有白屏閃過的問題
- android中使用react-native設置應用啟動頁過程詳解
- Android啟動頁用戶相關政策彈框的實現(xiàn)代碼
- Android實現(xiàn)漸變啟動頁和帶有指示器的引導頁
- Android項目實戰(zhàn)教程之高仿網易云音樂啟動頁實例代碼
- Android啟動頁廣告(騰訊廣告聯(lián)盟)解決方法及源碼下載
- Android啟動頁面定時跳轉的三種方法
- Android優(yōu)化之啟動頁去黑屏實現(xiàn)秒啟動
- Android啟動頁優(yōu)化之實現(xiàn)應用秒開
相關文章
這篇文章主要介紹了Android 的回調事件的相關資料,相當?shù)脑敿殻行枰男』锇榭梢詤⒖枷?/div> 2016-08-08
Android Native 內存泄漏系統(tǒng)化解決方案
這篇文章主要介紹了Android Native 內存泄漏系統(tǒng)化解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-07-07
詳解Android SpannableString多行圖文混排的應用實戰(zhàn)
本篇文章主要介紹了Android SpannableString多行圖文混排的應用實戰(zhàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-12-12
Android Studio3.6.3 當前最新版本數(shù)據(jù)庫查找與導出方法(圖文詳解)
這篇文章主要介紹了Android Studio3.6.3 當前最新版本數(shù)據(jù)庫查找與導出方法,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-04-04
Android 雙擊Back鍵退出應用的實現(xiàn)方法
這篇文章主要介紹了Android 雙擊Back鍵退出應用的實現(xiàn)方法的相關資料,希望通過本文能幫助到大家,讓大家實現(xiàn)這樣的功能,需要的朋友可以參考下2017-10-10
Android開發(fā)之ContentProvider的使用詳解
本篇文章介紹了Android開發(fā)之ContentProvider的使用詳解。需要的朋友參考下2013-04-04
Android基于reclyview實現(xiàn)列表回彈動畫效果
這篇文章主要為大家詳細介紹了Android基于reclyview實現(xiàn)列表回彈動畫效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-04-04
Android控件Tween動畫(補間動畫)實現(xiàn)方法示例
這篇文章主要介紹了Android控件Tween動畫(補間動畫)實現(xiàn)方法,結合具體實例形式分析了Android補間動畫的原理、功能實現(xiàn)與布局相關操作技巧,需要的朋友可以參考下2017-08-08
Android實現(xiàn)單頁面浮層可拖動view的一種方法
本篇文章主要介紹了Android實現(xiàn)單頁面浮層可拖動view的一種方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-10-10最新評論

