寫在前面,關於啓動頁適配方案,百度了一下網上的解決辦法,發現很多人使用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的都能適配,並保證圖片和頁面無變形拉伸。
本文完,歡迎評論探討。