app啓動優化和啓動頁適配方案

寫在前面,關於啓動頁適配方案,百度了一下網上的解決辦法,發現很多人使用xml佈局文件和啓動大圖的方式進行啓動頁適配,
還有進行了寬高比進行多圖適配,我反覆實驗後,發現這兩種方式並不是很好,大部分主流機型都存在拉伸和變形的情況。
我就寫下我的方案,供大家討論。

app啓動優化,目的是餵了提升用戶體驗。防止出現啓動慢,啓動白屏問題。
一般在啓動app時,我們會在application中初始化一些工具和加載大量的資源。
這就會導致app啓動速度慢,啓動速度會直接導致啓動白屏的時間。
反映給客戶時,會造成很不好的視覺體驗。
本文直接說明我的優化方案。
方案分爲兩步,一是加載優化,二是視覺優化。

一:加載優化:
        app內部包含了很多的資源,這些事必須加載的,此處不做過多的描述,重點放在初始化工具上。
在application的oncreate()方法中,不做初始化處理,儘可能的在可視化界面處理初始化工作。
例如啓動頁startActivity的oncreate()方法中進行初始化工作。這會直接提升application 的啓動速度。
因爲application的oncreate()方法是創建進程的,過多的進行初始化或者加載函數,就會增加耗時。

public class App extends BaseApplication {
    
    @Override
    public void onCreate() {
        super.onCreate();
        
    }
}
 

二 視覺優化:

視覺優化,如同字面意思,目的是爲了瞬啓動。當然做到瞬啓動是不可能的,因爲app內部不可能做到一點資源都沒有,
就算沒有資源,app也需要創建進程,這也需要時間。我們只能努力優化啓動時間,做到快速啓動。

以startActivity(啓動頁)爲例

首先繪製一個圖層start_xml內容如下:

<layer-list
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape>
            <solid android:color="@color/color_FFFFFF"/>
        </shape>
    </item>
    <item android:top="@dimen/dp_160">
        <bitmap android:src="@mipmap/startlogo"
            android:gravity="top|center_horizontal"/>
    </item>
    <item android:bottom="@dimen/dp_68">
        <bitmap android:src="@mipmap/starttxt"
            android:gravity="bottom|center_horizontal"/>
    </item>

</layer-list>

這是啓動頁效果,具體以你設計爲準。

自定義主題,給startActivity使用:
 <style name="AppTheme.Launcher">
        <item name="android:windowBackground">@drawable/start_xml</item>
        <item name="android:windowTranslucentStatus">true</item>
        <item name="windowNoTitle">true</item>
        <item name="windowActionBar">false</item>
        <item name="android:windowContentOverlay">@null</item>
    </style>


 然後是startActivity佈局文件activity_start  xml文件

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@color/color_transparent"
    tools:ignore="ResourceName"/>
這裏什麼都沒有,爲節省activity  ui繪製時間.

下面是使用startActivity:

<activity
            android:theme="@style/AppTheme.Launcher"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:resizeableActivity="true"
            android:screenOrientation="portrait"
            android:name=".ui.StartActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

說一下這樣使用的好處。適配率更高,能節省資源空間,縮小apk體積。

 

本方案能很好的適配大部分機型,例如4.0-10.0的都能適配,並保證圖片和頁面無變形拉伸。

本文完,歡迎評論探討。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章