APP性能優(yōu)化--啟動黑白屏體驗優(yōu)化

相信做app的每個人都遇到過,自己的app在啟動的時候,會出現(xiàn)白色或黑色的屏幕,然后過幾秒后,正常進(jìn)入應(yīng)用。這個不影響用戶使用,但是體驗不是那么的友好,那這個該如何解決會更友好呢?下面進(jìn)入正題

1.為什么會出現(xiàn)黑白屏呢?

當(dāng)我們點擊桌面圖標(biāo)時,系統(tǒng)會進(jìn)行zygote一個應(yīng)用進(jìn)程、應(yīng)用的初始化等一系列工作,這些都是需要耗時的。那么這段時間內(nèi),用戶會覺得“延遲”響應(yīng)(或卡頓),為了解決這個問題,google就默認(rèn)啟動一個空白的頁面,以便響應(yīng)用戶操作。

如果你的應(yīng)用application 或者launcher activity 啟動比較慢,比較耗時,沒有將系統(tǒng)的backgroundWindow替換掉,就會出現(xiàn)了黑白屏。那么這個黑白屏到底是黑色還是白色,取決于你選擇的應(yīng)用的Theme ,如果是Dark 就是黑色,反之Light 就是白色。

2.優(yōu)化方案

很多app都采用修改Theme的方式來優(yōu)化這個黑白屏的體驗。(以圖片為例)

2.1 準(zhǔn)備圖片(welcome_logo.png為你想展示的內(nèi)容)

welcome_logo.png

2.2 新建一個展示圖片的drawable 文件(welcome_bg.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:scaleType="centerCrop"
            android:src="@drawable/welcome_logo"></bitmap>
    </item>
</layer-list>

注:此處也可以修改成動畫等其他效果的。

2.3 自定義Theme

在styles.xml中添加自定義的Theme,如下:

<style name="AppTheme.Launcher">
        <item name="android:windowBackground">@drawable/welcome_bg</item>
        <item name="android:windowFullscreen">true</item>
    </style>

注意:上面的drawable ,為第二步自定義的圖片drawable

2.4 引用自定義的Theme

<activity
            android:name=".LoginActivity"
            android:launchMode="singleTask"
            android:screenOrientation="portrait"
            android:theme="@style/AppTheme.Launcher">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

        </activity>

2.5 最重要的一步

在上一步將啟動頁面的Theme 設(shè)置為我們自定義的了,那么啟動結(jié)束后是不是需要修改回來呢?那是必須的。

重要的事情說三遍
重要的事情說三遍
重要的事情說三遍

在Launcher Activity的onCreate(Bundle savedInstanceState)方法調(diào)用super.onCreate();之前使用setTheme()來修改回去。

 @Override
    protected final void onCreate(Bundle savedInstanceState) {
     setTheme(R.style.Activity_Translate_anim);
        super.onCreate(savedInstanceState);
        mDataBinding = DataBindingUtil.setContentView(this, getLayoutResId());
}

好了完成上述步驟,就可以實現(xiàn)啟動體驗優(yōu)化了,但是這只是其中一個方案,有更好的方案,歡迎留言。

最后編輯于
?著作權(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ù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。

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