[Android 效能最佳化系列]布局篇之動態載入布局

來源:互聯網
上載者:User

標籤:android   style   blog   http   io   ar   color   os   使用   

大家如果喜歡我的部落格,請關注一下我的微博,請點擊這裡(http://weibo.com/kifile),謝謝

轉載請標明出處(http://blog.csdn.net/kifile),再次感謝


原文地址:http://developer.android.com/training/improving-layouts/loading-ondemand.html

在接下來的一段時間裡,我會每天翻譯一部分關於效能提升的Android官方文檔給大家

效能最佳化布局篇:

[Android 效能最佳化系列]布局篇之減少你的介面層級

[Android 效能最佳化系列]布局篇之通過<include>複用布局

題外話:

很多時候我們都會在布局檔案中加入一些不常使用的控制項,但是我們又真的很少使用它們,但是它們在進行初始化的時候,一樣會消耗我們的系統資源,因此我們應該考慮通過ViewStub來最佳化他,正如在記憶體篇中所說的那樣,只在真正需要的時候使用它。


下面是本次的本文:

################

有時候,你的布局中會有一些比較複雜但是又很少用到的控制項。不管他是訊息詳情,進度條還是未完成的提示資訊,你都可以直到真正需要的時候再載入他們,以降低你的記憶體消耗,提升渲染效率。


定義一個ViewStub

ViewStub是一個沒有任何尺寸的輕量級View,他不會在布局上繪製任何東西或者做其他的工作。這就意味著,初始化以及在布局層級中保留它只需要很少的花費。此外,請記住每一個ViewStub都需要包含一個android:layout屬性來指明他將要顯示布局

下面這個ViewStub制定了一個半透明的進度條,只有當應用中加入新的項時我們才能夠被看到他:

<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的布局

當你想要載入ViewStub所指定的布局時,你可以選擇性的使用setVisiblity(View.VISIBLE)或者調用inflate()方法。

((ViewStub) findViewById(R.id.stub_import)).setVisibility(View.VISIBLE);// orView importPanel = ((ViewStub) findViewById(R.id.stub_import)).inflate();

注意:inflate()方法會返回初始化後的View,因此你不需要通過findViewById來尋找這個View

一旦指定的布局顯示出來或者說初始化完成,那麼ViewStub元素就不再是布局層級中的一部分了,他會被所指定的布局所替換,而被指定布局的id則是在ViewStub的屬性中通過android:inflatedId指定的(並且這個id僅當指定布局顯示或者初始化完成後有效)

注意:ViewStub的一個缺點是,它不能夠初始化<merge/>標籤的布局檔案


Ps:最近好懶且忙,所以一直沒有更新東西。其實這篇文章半個月前都差不多翻譯好了,但是覺得貌似很簡單,就沒有發出來,但想了想之後今天還是重新整理了一下文字,最終發了出來,布局篇本來應該還有一個關於ListView最佳化的部分,但是感覺大家其實一直都有用到,就直接在這個簡單陳述一下他的思想就好了。ListView進行的最佳化主要在於getView時,布局的重用,以及使用ViewHolder儲存需要使用的控制項,避免每次使用時都要通過findViewById進行尋找,詳情我就不怎麼說了,大家如果感興趣,可以去官方地址看看: http://developer.android.com/training/improving-layouts/smooth-scrolling.html 。所以呢,布局篇就到這裡了,感謝大家的閱覽。

[Android 效能最佳化系列]布局篇之動態載入布局

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.