目前app的設(shè)計思路虎锚,都會有一個啟動頁,來進行一些數(shù)據(jù)的初始化等一些比較耗時的操作衩婚,這就會造成啟動頁短暫的白屏或者黑屏(黑還是白取決于你的默認主題)窜护。那么,如何解決這種問題的非春?今天介紹一種比較完美的解決方案:layer_list疊加層柱徙。
如果你的啟動頁,是一張靜態(tài)圖片奇昙,那么這種方式非常適合你护侮。
一般來說,啟動頁都不會很花哨储耐,標準的都是一個logo+app名字羊初,上下排列。類似于下圖:
如果是這樣的什湘,那就是最簡單的长赞,找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單獨設(shè)置一個主題: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ù)機型屏幕大小自動適應(yīng))蠕啄,這種,該如何處理呢戈锻?UI妹紙又要求不能等比例放大顯示歼跟,說那樣很丑吧啦吧啦吧。格遭。哈街。
其實我們可以這樣:把上下布局切開,然后就變成了這樣:
我們的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設(shè)置布局文件(setContentView())作箍,只使用疊加層作為布局顯示。
如果你的app啟動頁比較花哨或者不規(guī)則前硫,你也可以利用這種方式胞得,增加一個比較簡潔的app啟動圖片的疊加層布局,作為啟動頁的主題進行加載屹电,啟動初始化完了再進行頁面的變化等操作阶剑,也可做到秒啟動,不再忍受白屏或者黑屏危号。
感謝各位閱讀牧愁!
如果有錯誤,還請指正外莲!
你可能需要:【工具】判斷國產(chǎn)各大Rom的工具類