編輯:關於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_height="fill_parent"
android:scaleType="center"
android:src="@drawable/golden_gate" />
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_height="fill_parent"
android:scaleType="center"
android:src="@drawable/golden_gate" />
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.
B.當需要擴充的xml layout本身是由merge作為根節點的話,需要將被導入的xml layout置於viewGroup中,同時需要設置attachToRoot為True。
在android開發中ListView是比較常用的組件,它以列表的形式展示具體內容,並且能夠根據數據的長度自適應顯示。抽空把對ListView的使用做了整理,並寫了個小例
一、引言 想實現一個空白的畫板,上面可以畫出手滑動的軌跡,就這麼一個小需求
自己研究的安卓app簽核系統,目前公司內部用著好像也相對穩定,就用這篇文章記錄一下工具環境:Eclipse4.2 ADT23.0 JDK1.8.0 服務端vs2010簡單
有時我們在應用中會用到圓形頭像,下面是利用CircleImageView實現圓形頭像的演示,下面效果和代碼,效果如圖實現起來也比較簡單,先在項目中建一個circleima