Android布局優(yōu)化merge、ViewStub的用法

由于在Android開發(fā)工程中需要開發(fā)很多界面,每個界面又是以xml布局的形式進(jìn)行加載。所以在加載這些布局文件的時候是一個開銷很大的過程。因此我們在寫布局文件的時候需要考慮一些優(yōu)化來加快程序的性能.

一、性能方面優(yōu)化

1.盡量避免多層次的嵌套,因為布局可以無限制的進(jìn)行嵌套。所以寫起來難免有些肆無忌憚,但是布局結(jié)構(gòu)盡量要避免多層次的嵌套來減少開銷。數(shù)量應(yīng)最多不要超過10層。

2.使用merge標(biāo)簽。

如圖,使用merge標(biāo)簽可以減少多余的層次結(jié)構(gòu),多用于一個布局需要包含另一個布局的時候,或者這一個布局用到的重復(fù)樣式比較多。在加載merge標(biāo)簽的時候,不會加載父控件,只會加載merge標(biāo)簽中的子view。merge標(biāo)簽結(jié)合include一起使用可以靈活的、可復(fù)用性強(qiáng)的創(chuàng)建布局。

3.避免過多的view,填充每個view都要花費(fèi)一些資源和時間,為了更快速加載,應(yīng)盡量減少view的加載。如果布局包含的view個數(shù)超過80,填充布局花費(fèi)的時間將成為一個顯著的問題。

4.使用ViewStub




ViewStub有一個比較大的優(yōu)點就是當(dāng)你用到這個布局的時候才會去加載,例如我們在布局里寫了ViewStub并引用一個我們寫好的布局。這時候我們可以在我們的activity中使用的時候,必須先設(shè)置visible。 這樣這個布局才會被加載顯示。否則是不會顯示的。為了防止都findViewById 方法,我們可以調(diào)用inflate()方法,這個方法會返回一個view,我們可以直接對這個view進(jìn)行操作。


二、代碼可視性的優(yōu)化。

1、寫布局的時候,可以盡量在父控件中做操作,這樣會影響到每個子view。例如,我們經(jīng)常寫距離左邊距,這個時候一個在父母局中寫一次,而不是在每個子控件中都寫一遍。

2、寫線性布局的時候可以使用權(quán)重,這樣也會對屏幕適配起作用。

3、Android studio中可以直接對多次重用的空間進(jìn)行屬性抽取。


如圖,抽取的屬性將會在style中,我們在布局文件中就可以直接引用。多次需要用到這個屬性的時候我們可以直接用一行代碼引用即可。

4、使用include標(biāo)簽,來引用比較復(fù)雜,或者抽象的布局文件。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容