前言
每個app中都有啟動+廣告這個功能邏輯,或多或少,每個公司的邏輯都不大一樣,最近我優(yōu)化了一版廣告業(yè)+啟動頁面邏輯,遇到了一些問題,同大家分享一下
流程圖
優(yōu)化
我們在啟動頁面的時候如果直接把"啟動圖"寫在Launcher的activity里面就會出現(xiàn)打開的一瞬間出現(xiàn)白屏現(xiàn)象,所以我們需要針對launcher對應(yīng)的activity在AndroidManifest.xml中設(shè)置一個屬于他自己的theme,設(shè)置一個windwoBackground,本人代碼如下:
<style name="MyTheme_Full_Splash" parent="Theme.AppCompat.Light.NoActionBar">
<!--android:windowFullscreen 是否展示全屏 -->
<item name="android:windowFullscreen">true</item>
<item name="android:windowBackground">@mipmap/loading_bg</item>
</style>
同時盡量不要再Application里面寫一些耗時操作,比如handler等待,靜態(tài)操作,輪詢等耗時操作,以免點擊app的時候給用戶造成卡頓的錯覺,盡量寫一個靜態(tài)的類,然后在launcher的初始化的時候賦值一下就OK
代碼
廣告業(yè)比較特殊,上面是一張圖片,下面是我方的一個logo圖.圖片框架用的Glide,項目運行應(yīng)該是不正常的,請看下方問題+解決來修改項目,以確保正確運行,也是為了讓讀者發(fā)現(xiàn)并且知道這個問題.以防以后出現(xiàn)這種問題花費時間解決.
項目Github地址
問題+解決
Glide加載圖片加載不出來,listener回調(diào)也沒有走到成功或者失敗的回調(diào)函數(shù)中.開始我以為是Glide的配置有問題,我查看Glide日志也沒有發(fā)現(xiàn)任何問題,經(jīng)過層層排查,最后將問題鎖定在高度繪制,我們都知道Glide繪制是需要有寬高的,但是因為開始需要顯示啟動頁,廣告頁加載出來才可以顯示廣告頁,所以我把廣告頁面的布局Gone.然后我看LinearLayout的源碼發(fā)現(xiàn)
如果等于Gone竟然不去繪制View的高度,RelativeLayout也同樣,大家可以去看一下,我果斷把Gone改成了invisible,結(jié)果發(fā)現(xiàn)還是不顯示,然后我去打印,結(jié)果發(fā)現(xiàn)高度還是為0,接著查看源碼結(jié)果發(fā)現(xiàn)子View里面設(shè)置了weight,也沒辦法獲取高度,我果斷改成RelativeLayout,結(jié)果好使了,問題就是這些,但是我解決了好半天,最后感覺還是沒事兒多看看源碼,好使
修改
大家下載了Demo 的話,需要把 activity_splash.xml 里面的LinearLayout修改成RelativeLayout,并且把ImagView的weight去掉,然后用marginBottom設(shè)置距下面的距離,這樣就是一個完整的啟動頁+廣告頁的完整項目.