擠掉安卓啟動頁的最后一點空白

前言

基本上每個開發(fā)安卓App的人都會遇到一個需求,那就是啟動頁 + 廣告頁的功能。

那么肯定就會有不少的一部分人會遇到這樣的一個問題,就是啟動App的時候,總會有那么一瞬間的白屏,如下:

改版前

遇到性能差一點的安卓機(jī),那么這個白屏?xí)拥拿黠@。那么我們應(yīng)該怎么樣去擠掉啟動頁的這一瞬間的空白呢?

PS:

因為改動比較簡單,我也沒有專門去寫一個DEMO,所以直接在當(dāng)前的一個項目中去講解,所以我會在我上一篇文章的一個基礎(chǔ)之上進(jìn)行演示。

鏈接:安卓少見的gradle多渠道打包

1,styles.xml文件添加主題

首先第一步是在styles.xml文件中,添加我們所需要的主題,這個主題會應(yīng)用在啟動頁,如下:

<style name="Theme.Start_ucom" parent="android:Theme">
    <item name="android:windowBackground">@drawable/start_page_ucom</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowFullscreen">?android:windowNoTitle</item>
</style>

<style name="Theme.Start_yxj" parent="android:Theme">
    <item name="android:windowBackground">@drawable/start_page_yxj</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowFullscreen">?android:windowNoTitle</item>
</style>

<style name="Theme.Start_xxy" parent="android:Theme">
    <item name="android:windowBackground">@drawable/start_page_xxy</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowFullscreen">?android:windowNoTitle</item>
</style>

PS:

1,我上一篇文章寫過多渠道打包,所以有時候我們需要針對每一個渠道單獨做一個啟動頁 + 廣告頁,所以我在styles.xml文件中為每個渠道包專門定義了各自的一個啟動主題;

2,android:windowBackground,是指啟動頁Activity時,指定展示的背景圖;

3,其它兩個屬性,意思是全屏展示。

2,在app.gradle中的小改動

在上一篇的多渠道打包中,有在app.gradle中定義了每個渠道包的配置信息,那么這次添加啟動頁的主題后,做了一小點改動,改動后的配置信息如下:

// gradlew assemble 多渠道打包 2017/7/24 14:09
productFlavors {
    yxj {
        manifestPlaceholders = [APP_NAME: "@string/app_name",
                                APP_START_PAGE: "@style/Theme.Start_yxj",
                                APP_CHANNEL: "yxj",
                                APP_ICON: "@drawable/ic_launcher"]
    }

    ucom {
        manifestPlaceholders = [APP_NAME: "@string/app_name_ucom",
                                APP_START_PAGE: "@style/Theme.Start_ucom",
                                APP_CHANNEL: "ucom",
                                APP_ICON: "@drawable/ic_launcher_ucom"]
    }

    xxy {
        manifestPlaceholders = [APP_NAME: "@string/app_name_xxy",
                                APP_START_PAGE: "@style/Theme.Start_xxy",
                                APP_CHANNEL: "xxy",
                                APP_ICON: "@drawable/ic_launcher_xxy"]
    }
}

PS:

添加APP_START_PAGE的屬性,分別指定各自需要啟動的主題。

3,改動AndroidManifest.xml

在清單文件AndroidManifest.xml文件中,針對啟動頁添加如下改動:

<activity
    android:name=".activity.StartActivity"
    android:theme="${APP_START_PAGE}"
    android:label="${APP_NAME}"
    android:screenOrientation="portrait">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>

        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
</activity>

PS:

android:theme="${APP_START_PAGE}",動態(tài)指定啟動頁的主題,根據(jù)App的渠道號動態(tài)分配。

4,改動后的效果

經(jīng)過上面3個步驟的改動,那么改動后的演示效果如下:

改版后

結(jié)尾

經(jīng)過上面的幾個步驟的配置,我們可以很簡單的刷掉啟動時,透露出來的一瞬間的白屏。

當(dāng)然,如果在啟動頁還需要加入廣告頁,在這里就不詳細(xì)講了,但在這里可以提供一個思路,就是進(jìn)入啟動頁時,動態(tài)訪問后臺服務(wù)器,拉取廣告信息,可以先緩存需要展示的gif或者靜態(tài)圖,下一次進(jìn)入時讀取廣告信息,進(jìn)行展示。

這里需要注意一點的就是,展示的廣告布局一定要設(shè)置一個白色背景色,當(dāng)廣告信息需要展示的時候,才可以擋住之前在主題中設(shè)置的windowBackground信息。

好了,今天關(guān)于啟動頁的白屏問題就講到這里了。

希望對你有所幫助~~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容