天天看點

提高顯示布局檔案的性能 3 - 按需載入視圖(ViewStub的使用方法) Loading Views On Demand [按需載入視圖]

某些時候,我們需要一些很複雜的視圖卻僅僅很少用到。如果我們在它僅僅需要的時候再載入,這樣可以減少記憶體的使用并且給使用者帶來流暢的體驗。

viewstub是一個輕量級的view,沒有占有空間,沒有花費draw的資源,也沒有參與在任何一個layout裡面。

不僅建立它僅需要很少的系統資源,而且存留在view的層級也是個比較不花費資源的動作。

每一個viewstub簡單的包含一個android:layout的屬性來指定待建立的布局檔案。

下面是一個包含progress bar的viewstub例子,這對于overlay來說是透明的,progress bar僅僅會在需要導入的時候才會可見。

<viewstub  

    android:id="@+id/stub_import"  

    android:inflatedid="@+id/panel_import"  

    android:layout="@layout/progress_overlay"  

    android:layout_width="fill_parent"  

    android:layout_height="wrap_content"  

    android:layout_gravity="bottom" />  

當你想要載入在viewstub中定義的布局的時候,可以calling <code>setvisibility(view.visible)</code> or

call <code>inflate()</code>.

一旦被設定可見或者被建立,這個viewstub元件則從view層級中消失,它被建立出來的布局所替代,而且這個布局的id就是viewstub裡面用android:inflatedid屬性所定義的。

(用來定義這個viewstub的id的屬性andoid:id直到被可見才是有效的)。

note:viewstub的一個缺陷是目前并不支援建立包含有&lt;merge&gt;标簽的布局檔案。

更多viewstub的資訊請看:http://developer.android.com/resources/articles/layout-tricks-stubs.html

繼續閱讀