国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android啟動頁出現白屏、黑屏的解決方案

2019-10-22 18:19:52
字體:
來源:轉載
供稿:網友

歷史原因

當系統啟動一個APP時,zygote進程會首先創建一個新的進程去運行這個APP,但是進程的創建是需要時間的,在創建完成之前,界面是呈現假死狀態的,這就很尷尬了,因為用戶會以為沒有點到APP而再次點擊,這極大的降低用戶體驗,Android需要及時做出反饋去避免這段迷之尷尬。于是系統根據你的manifest文件設置的主題顏色的不同來展示一個白屏或者黑屏。而這個黑(白)屏正式的稱呼應該是Preview Window,即預覽窗口。

好了,現在我們明白了,Preview Window其實是為了提高用戶體驗而有意設定的。因此,其實如果不是強迫癥,它可能并不是一個問題。

但是我猜大部分小伙伴應該是和我一樣的強迫癥患者:這么丑的黑屏怎么能出現在我的APP上呢???!!!

所以,下面我們就來聊聊這個問題的解決方案。

引言

目前app的設計思路,都會有一個啟動頁,來進行一些數據的初始化等一些比較耗時的操作,這就會造成啟動頁短暫的白屏或者黑屏(黑還是白取決于你的默認主題)。那么,如何解決這種問題的?今天介紹一種比較完美的解決方案:layer_list疊加層

如果你的啟動頁,是一張靜態圖片,那么這種方式非常適合你。

一般來說,啟動頁都不會很花哨,標準的都是一個logo+app名字,上下排列。類似于下圖:

android,啟動白屏,啟動頁面白屏,啟動頁黑屏

QQ音樂啟動頁

如果是這樣的,那就是最簡單的,找UI切幾張logo+文字的圖,按照x xx xxx放好,然后drawable文件夾中新建一個layer_splash.xml文件:

<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android/56489.html">android/223995.html">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>

但是,如果你的啟動頁不是這種布局,而是類似于下圖這種:

android,啟動白屏,啟動頁面白屏,啟動頁黑屏

微博

上下布局,間隔較大,而且上下之間的布局不固定(根據機型屏幕大小自動適應),這種,該如何處理呢?UI妹紙又要求不能等比例放大顯示,說那樣很丑吧啦吧啦吧。。。

其實我們可以這樣:把上下布局切開,然后就變成了這樣:

android,啟動白屏,啟動頁面白屏,啟動頁黑屏

splash_top

android,啟動白屏,啟動頁面白屏,啟動頁黑屏

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要根據不同尺寸的啟動頁圖片進行切割,這樣就完美解決了各種分辨率屏幕的適配問題(包括平板)。

如果你的啟動頁比較簡潔,和我說的這兩種情況差不多,你完全可以不給啟動頁Activity設置布局文件(setContentView()),只使用疊加層作為布局顯示。

如果你的app啟動頁比較花哨或者不規則,你也可以利用這種方式,增加一個比較簡潔的app啟動圖片的疊加層布局,作為啟動頁的主題進行加載,啟動初始化完了再進行頁面的變化等操作,也可做到秒啟動,不再忍受白屏或者黑屏。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 合川市| 西乡县| 和林格尔县| 安达市| 阿瓦提县| 镇赉县| 青岛市| 平阴县| 玉田县| 克山县| 和平县| 图木舒克市| 永德县| 历史| 平凉市| 屏边| 赤峰市| 乌拉特中旗| 望奎县| 永寿县| 威远县| 那坡县| 海宁市| 镇坪县| 乡宁县| 平阴县| 普格县| 广平县| 淮南市| 韩城市| 绥江县| 锡林郭勒盟| 泸州市| 康定县| 微博| 合川市| 长阳| 赤城县| 栾川县| 夏河县| 婺源县|