Android優化之佈局優化

呆萌土撥鼠發表於2017-03-27

佈局優化其實他的本質就是減少Android繪製時的工作量,Android繪製時的工作量減少,程式的效能自然就會提高

  1. 佈局時的選用

    • 佈局時的選用如果我們的佈局中既可以使用RelativeLayout也可以使用LinearLayout那麼我們就採用LinearLayout,因為RelativeLayout的功能比較複雜他的佈局過程需要花費更多的Cpu時間同時RelativeLayout會讓子View呼叫兩次onMeasure,而LinearLayout再有Weight是才會讓子View呼叫兩次onMeasure.
    • 儘量減少佈局巢狀
    • 刪除佈局中無用的控制元件和層級
    • 如果進行多層佈局之間的巢狀建議使用RelativeLayout
  2. 程式碼重用,有時候我們可以用indlude標籤將指定的佈局載入到我們當前佈局中
    例如:
    <include layout="@layout/item_bar" />

  3. 用TextView顯示文字和圖片減少佈局中的元件數量
    有時候我們佈局中會碰見下面圖片中的功能
    這裡寫圖片描述
    大家是怎麼做的呢是不是向下面這樣


    <LinearLayout
            android:id="@+id/ll_red"
            style="@style/LlMine">
        <ImageView
                android:src="@drawable/hsbkdiys"
                style="@style/Next"/>
        <TextView style="@style/TxMine"
                  android:text="紅包抵用劵"/>

        <ImageView
                style="@style/Next.Next"/>
    </LinearLayout>

這用做其實會有很多多餘的控制元件其實上面的功能只需要一個TextView就可以搞定

<TextView
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:drawableLeft="@drawable/xmjnhsbk"
        android:drawableRight="@drawable/next_new"
        android:paddingRight="20dp"
        android:drawablePadding="20dp"
        android:text="政府"
        android:textSize="16sp"
        android:paddingLeft="20dp"
        android:gravity="center_vertical"
        />


android:drawableLeft=”@drawable/xmjnhsbk”
android:drawableRight=”@drawable/next_new”
這兩行程式碼引用兩邊的圖片

4.ViewStub的使用ViewStub它本身不參與任何佈局的繪製和佈局過程他的意義就在於按照需要載入所需的佈局檔案
例如:網路異常時的介面
他沒有必要整個介面初始載入時進行載入只有在我們網異常時才會載入該介面使用ViewStub就可以做到需要時才載入該介面減少整個佈局的初始時間

今天的佈局效能優化就在這裡。

相關文章