Android布局最佳化思考

來源:互聯網
上載者:User

標籤:情況   merge   效率   include   relative   measure   views   代碼   span   

一、關於RelativeLayout和LinearLayout的使用

由源碼可以知道,RelativeLayout需要對其子View進行兩次measure過程,而LinearLayout只需一次measure過程,我們知道,onMeasure的耗時越長效率就越低,但是如果LinearLayout中有weight屬性,也需要進行兩次measure,即便如此,仍然會比RelativeLayout的情況好一些。

總體原則:減少布局層次,加快渲染速度。

當線性布局和相對布局均可以實現時,優先使用線性布局LinearLayout,如果使用的是相對布局RelativeLayout,盡量避免RelativeLayout嵌套RelativeLayout,並且盡量使用padding代替margin。

二、<include />的使用

<include />標籤可以在一個布局中引用另外一個布局,實現布局重用。比如共同的標題列(title.xml),只要加上如下代碼即可重用。

<include layout=“@layout/title” />

三、<merge /> 的使用

<merge />標籤可以減少視圖的層級結構。比如說,如果主布局是線性布局,include進來的也是線性布局,這時候include進來的線性布局就是多餘的,可以用merge標籤代替(重用布局的父布局使用merge),仍使用include引入布局。

四、ViewStub的使用

ViewStub是一個輕量級的View,寬高均為0,實現View的消極式載入,避免資源的浪費,減少渲染時間,在需要的時候才進行載入。比如提醒框的使用。

五、Space控制項的使用

Space控制項佔據一定的空間,但是不顯示任何東西,可用於行間隔。

六、TextView的使用

TextView可同時顯示文字和圖片;TextView的屬性lineSpacingExtra可設定行間距。

七、LinearLayout線性布局

LinearLayout的屬性divider可設定分割線,相關屬性:dividerPadding、showDividers。

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.