由于在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)行屬性抽取。

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