1.RelativeLayout會讓子View調(diào)用2次onMeasure,LinearLayout 在有weight時(shí)队腐,也會調(diào)用子View2次onMeasure
2.RelativeLayout的子View如果高度和RelativeLayout不同,則會引發(fā)效率問題泽本,當(dāng)子View很復(fù)雜時(shí)经备,這個(gè)問題會更加嚴(yán)重。如果可以吟逝,盡量使用padding代替margin。
3.在不影響層級深度的情況下,使用LinearLayout和FrameLayout而不是RelativeLayout赦肋。
最后再思考一下文章開頭那個(gè)矛盾的問題块攒,為什么Google給開發(fā)者默認(rèn)新建了個(gè)RelativeLayout,而自己卻在DecorView自己是FrameLayout但是它只有一個(gè)子元素是屬于LinearLayout佃乘。因?yàn)镈ecorView的層級深度是已知而且固定的囱井,上面一個(gè)標(biāo)題欄,下面一個(gè)內(nèi)容欄趣避。采用RelativeLayout并不會降低層級深度庞呕,所以此時(shí)在根節(jié)點(diǎn)上用LinearLayout是效率最高的。而之所以給開發(fā)者默認(rèn)新建了個(gè)RelativeLayout是希望開發(fā)者能采用盡量少的View層級來表達(dá)布局以實(shí)現(xiàn)性能最優(yōu)鹅巍,因?yàn)閺?fù)雜的View嵌套對性能的影響會更大一些千扶。
4.能用兩層LinearLayout,盡量用一個(gè)RelativeLayout骆捧,在時(shí)間上此時(shí)RelativeLayout耗時(shí)更小澎羞。另外LinearLayout慎用layout_weight,也將會增加一倍耗時(shí)操作。由于使用LinearLayout的layout_weight,大多數(shù)時(shí)間是不一樣的敛苇,這會降低測量的速度妆绞。這只是一個(gè)如何合理使用Layout的案例,必要的時(shí)候枫攀,你要小心考慮是否用layout weight括饶。總之減少層級結(jié)構(gòu)来涨,才是王道图焰,讓onMeasure做延遲加載,用viewStub蹦掐,include等一些技巧技羔。