Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android UI深入優化 merge標簽

Android UI深入優化 merge標簽

編輯:關於Android編程

Android 內存優化是一個很重要的問題,而UI優化有是重中之重。

該標簽在優化UI結構時起到很重要的作用,目的是通過刪減多余或者額外的層級,從而優化整個UI Layout的結構。建立一個簡單的Layout,其中包含兩個Views元素:ImageView和TextView,默認狀態下我們將這兩個元素放在FrameLayout中。其效果是在主視圖中全屏顯示一張圖片,之後將標題顯示在圖片上,並位於視圖的下方。以下是xml代碼:
Xml代碼
< FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="center"
android:src="@drawable/golden_gate" />

android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="20dip"
android:layout_gravity="center_horizontal|bottom"
android:padding="12dip"
android:background="#AA000000"
android:textColor="#ffffffff"
android:text="Golden Gate" />
</frameLayout>

啟動 tools> hierarchyviewer.bat工具查看當前UI結構視圖:

\
我們可以很明顯的看到由紅色線框所包含的結構出現了兩個framelayout節點,很明顯這兩個完全意義相同的節點造成了資源浪費,這種情況可以使用merge標簽進行解決。把根節點換成merge標簽,如下:
Xml代碼
< merge xmlns:android="http://schemas.android.com/apk/res/android">
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="center"
android:src="@drawable/golden_gate" />
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="20dip"
android:layout_gravity="center_horizontal|bottom"
android:padding="12dip"
android:background="#AA000000"
android:textColor="#ffffffff"
android:text="Golden Gate" />

運行程序後在Emulator中顯示的效果是一樣的,可是通過hierarchyviewer查看的UI結構是有變化的,當初多余的 FrameLayout節點被合並在一起了,或者可以理解為將merge標簽中的子集直接加到Activity的FrameLayout根節點下了。(這裡需要提醒大家注意:所有的Activity視圖的根節點都是FrameLayout)。如果你所創建的Layout並不是用FramLayout作為根節點(而是應用LinerLayout等定義root標簽),就不能應用上邊的例子 通過merge來優化UI結構了。
除了上邊的例子外,meger還有另外一個用法:當應用Include或者ViewStub標簽從外部導入xml結構時,可以將被導入的xml用merge作為根節點,這樣當被嵌入父級結構中後可以很好的將它所包含的子集融合到父級結構中,而不會出現冗余節點。
另外有兩點需要特別注意:
A.只可以作為xml layout的根節點;
B.當需要擴充的xml layout本身是由merge作為根節點的話,需要將被導入的xml layout置於viewGroup中,同時需要設置attachToRoot為True。


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved