Android 性能優化——佈局優化

佈局優化:就是儘量減少佈局文件的層級,致使Android的繪製的工作量減少了,性能就提高啦。

第一種
首先刪除佈局中無用的控件和層級,其次有選擇性的使用性能較低的ViewGroup。
比如RelativeLayout. 如果佈局中即可以使用RelativeLayout和LinerLayout 那麼優先選擇 後者,因爲RelativeLayout功能比較複雜,會消耗較多的cpu時間。
FrameLayout和LinerLayout 是一樣的一種簡單高效的ViewGroup 。當單一使用這兩者無法實現效果時,需要嵌套時候,建議使用RelativeLayout.這是由於ViewGroup的嵌套就相當於增加了佈局的層級,同樣會降低程序的性能。

第二種

採用 標籤<include>和標籤<merge> 還有ViewStub.
<include>標籤用於佈局重用,一般和<merge>標籤配合使用, 可以減低佈局層級。
ViewStub 主要是提供了按需加載的功能,當需要時纔會將ViewStub的佈局加載到內存中, 提高程序初始化效率。

<include>標籤的應用

這裏寫圖片描述

這裏寫圖片描述

<merge>標籤的應用

這裏寫圖片描述

例如LinerLayout 水平 佈局中 需要嵌套另一個 水平佈局的LinerLayout 那麼就可以用<merge>標籤代替。

ViewStub
ViewStub 繼承了View ,它是非常輕量級 而且 高/寬都是0,應爲它本身不參與任何佈局和繪製, 按需分配的,神馬意思呢,比如我們網絡加載異常的時候,這個時候需要加載進來。網絡正常時,沒有必要在整個界面進行初始化。

這裏寫圖片描述

(ViewStub)findviewById(R.id.stub_import).setVisibility(View.VISIBLE);方法來初始化。
或者 View importPanel=((ViewStub)findviewById(R.id.stub_import)).inflate();

注意: 目前 viewStub 還不支持<merge>

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