2013-06-30
UI 優化
在Android中,最常用LinearLayout表示UI的布局。比起LinearLayout,在資源利用上,RelativeLayout會占用更少的資源而達到相同的效果。針對RelativeLayout有一點需要注意,因為它內部是通過多個View之間的關系而確定的布局,那么當其中某一個View因為某些需要調用GONE來完全隱藏掉后,會影響與其關聯的Views,屬性alignWithParentIfMissing用於解決類似問題。
簡單或復雜的問題都需要時常考慮如何優化資源的分配。當我們面對Android UI優化時,有必要繼續考慮資源復用。定義Android布局文件時,有4個比較特別的標簽是非常重要:<viewStub/>, <requestFocus/>, <merge/>和<include/>,其中3個與資源復用有關。
1. <viewStub/> 直觀效果類似於View的不可見性,但其所包裹的View在默認狀態下不會占用任何內存空間。viewStub通過include從外部導入View元素。用法:通過屬性android:layout來設定內容。
2. <include/> 用於直接加載xml,是復用UI資源的常用標簽。用法:通過屬性layout來設定加載的xml。
3. <requestFocus/> 用於設定焦點。用法:將<requestFocus/>放於View標簽中。
4. <merge/> 目的:刪減多余或額外的層級。
查看當前UI結構:運行android sdk/tools/hierarchyviewer.bat
如果你創建的Layout不是把FrameLayout當作根節點,就不能使用<merge/>來優化。
當使用include或viewStub從外部導入xml結構時,可以將被導入的xml用merge作為根節點,這樣當被嵌入后可以很好地融合,不會出現冗余的節點。
<merge/>只可以作為xml-layout的根節點。擴充的xml-layout是merge作為根節點時,需要將被導入的xml-layout置於viewGroup中,同時需要設置attachToRoot為true。
圖片優化
在Android中,BitmapFactory的使用。
在開發過程中盡可能降低對高質量圖片的使用以提高運行效率。
同一張圖片如何在不同大小屏幕合適地顯示出來?如果圖片不夠滿屏,就對圖片進行放大,相反就進行縮小。
將多張圖片集成到一張圖片上。減少圖片的顏色數。