最近項目寫到了APP打開的啟動頁和廣告頁面晃虫,特此記錄,以待備用扣墩。
這張圖片是網(wǎng)上找的哲银,流程很清晰,出處在下面的參考資料1中呻惕,有需要的可以去看一下荆责。
一、啟動頁面
眾所周知亚脆,APP在啟動的時候草巡,會有一小段時間(白屏、黑屏)型酥,系統(tǒng)會預(yù)讀APP的主題山憨,所以有的黑屏,有的白屏弥喉。
設(shè)置啟動頁目的:提升用戶體驗郁竟。
知識點:
- 冷啟動:是指進程從無到有的過程。因為要進行頁面初始化由境,所以相對其他兩個啟動方式棚亩,消耗的時間是相對比較多的。
- 熱啟動:是指之前的進程還在虏杰,在之前進程的基礎(chǔ)上創(chuàng)建 Activity 的過程讥蟆。這里耗時相對少一點。
解決方案:
方案1纺阔、(使用Splash頁面)
建立 Splash 頁面(好多人這樣叫)瘸彤,并通過設(shè)置theme,使用背景顏色或者圖片代替空白頁面笛钝。
- 建立一個 空白 Activity 頁面质况,取名 SplashActivity愕宋,并在 AndroidManifest 中設(shè)置為啟動的頁面
SplashActivity頁面的代碼:
- 在res/values/styles 文件中,新建一個theme 结榄,如下圖所示:
注意: 其中的 windowBackground 設(shè)置中贝,可以設(shè)置為 *.xml 文件 也可以直接設(shè)置為 圖片。
設(shè)置圖片臼朗,圖片固定邻寿,設(shè)置xml文件可以實現(xiàn)復(fù)雜效果(沒用過)。
- 使用xml 文件
在res/drawable下新建一個layer-list视哑,比如bg_splash.xml老厌。
之所用layer-list是因為這個可以進行圖片疊加。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<!-- 圖片 -->
<bitmap
android:gravity="center"
android:src="@drawable/wel_page" />
</item>
</layer-list>
使用圖片黎炉,放到 drawable文件夾下面(適配這個可要考慮了)枝秤,而且如果使用了圖片,內(nèi)存中不會釋放慷嗜,所以在代碼中要通過流讀取文件設(shè)置(查看資料這樣說的淀弹,目前不考慮這塊)
將theme 設(shè)置為 SplashActivity中。
方案2庆械、
在網(wǎng)上找的另外一種方案:
- 設(shè)置 theme中的 windowbackground 為透明
- 設(shè)置android:windowIsTranslucent屬性薇溃,表明該窗口是半透明的
- 設(shè)置android:windowDisablePreview屬性,禁用窗口的預(yù)覽動畫缭乘, 在MainActivity顯示之前沐序,系統(tǒng)永遠不會使用窗口的主題來顯示它的預(yù)覽。
以上的3個都可以保證不會出現(xiàn)白屏或者黑屏堕绩,但是在主程序中策幼,啟動的時候不能做復(fù)雜的操作,否則會導(dǎo)致
在手機中點擊了應(yīng)用程序的圖標奴紧,但過一特姐、兩秒才會打開應(yīng)用程序不好的卡頓體驗效果。
部分代碼設(shè)置:
<style name="AppTheme.NoActionBar.Splash">
<item name="android:windowIsTranslucent">@bool/windowIsTranslucent</item>
<item name="android:windowBackground">@color/transparent</item>
</style>
二黍氮、廣告頁面(有的叫閃屏頁面)
目前市面基本大部分APP 都有這塊功能唐含,打開APP,等待3s就會自動跳轉(zhuǎn)到主頁面沫浆,或者手動點擊跳過廣告按鈕捷枯。其中的廣告內(nèi)容會動圖變更。
目的:
- 跟風(fēng)专执,大部分軟件都這么做
- 放廣告淮捆,做活動推廣
- 后臺開始加載數(shù)據(jù)了,閃屏過后數(shù)據(jù)直接呈現(xiàn)出來(其實我認為這點才是最重要的)
思路:打開APP的時候,聯(lián)網(wǎng)請求廣告圖片争剿,加載并保存本地已艰。下次打開APP首先加載本地圖片痊末,然后請求網(wǎng)絡(luò)看是否有新的圖片蚕苇。