Android UI 優化 [ 類別:Layout ] #2 viewStub include requestFocus

簡單或複雜的問題都需要時常考慮如何優化資源的分配。比如一個功能很簡單的應用程序,它會調用一些我們常用的對話框或者輸入面板,這需要採用統一的方式來針對不同的應用程序制定統一標準。

當我們面對Android UI優化時,有必要繼續考慮資源複用。手機開發給我們的直觀感覺是運行其上的軟件應該儘可能的達到資源高效利用的極致,而不能像開發PC機那樣,似乎有用之不盡的資源。

定義Android Layout(XML)時,有四個比較特別的標籤是非常重要的,其中有三個是與資源複用有關,分別是 <viewStub />, <requestFocus />, <merge /> and <include />。可是以往我們所接觸的案例或者官方文檔的例子都沒有着重去介紹這些標籤的重要性。

  • <viewStub  />: 此標籤可以使UI在特殊情況下,直觀效果類似於設置View的不可見性,但是其更大的(R)意義在於被這個標籤所包裹的Views在默認狀態下不會佔用任何內存空間。viewStub通過include從外部導入Views元素。
    • 用法:通過android:layout來指定所包含的內容。默認情況下,ViewStub所包含的標籤都屬於visibility=GONE。viewStub通過方法inflate()來召喚系統加載其內部的Views。
      <ViewStub android:id="@+id/stub"
      android:inflatedId="@+id/subTree"
      android:layout="@layout/mySubTree"
      android:layout_width="120dip"
      android:layout_height="40dip" />
      
  • <merge />: 將在下一篇做詳細介紹。
  • <include />:可以通過這個標籤直接加載外部的xml到當前結構中,是複用UI資源的常用標籤。
    • 用法:將需要複用xml文件路徑賦予include標籤的Layout屬性。
      <include android:id="@+id/cell1" layout="@layout/ar01" />
      <include android:layout_width="fill_parent" layout="@layout/ar02" />
      

       

  • <requestFocus />: 標籤用於指定屏幕內的焦點View。
    • 用法: 將標籤置於Views標籤內部
      <EditText id="@+id/text"
                   android:layout_width="fill_parent"
                   android:layout_height="wrap_content"
                   android:layout_weight="0"
                   android:paddingBottom="4">
             <requestFocus />
      </EditText>

參考資料:

http://groups.google.com/group/android-developers/browse_thread/thread/f169c76bc7faccaf/cab78c24a36d3101

http://android-developers.blogspot.com/2009/02/android-layout-tricks-2-reusing-layouts.html

如果以上內容存在錯誤或者遺漏之處,請給予指正,非常感謝。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章