個(gè)人博客: 斯科特安的時(shí)間
很多初接觸android的同學(xué)在布局時(shí)都會(huì)有這樣一個(gè)疑問(wèn):
這個(gè)布局的父親用LinearLayout和RelativeLayout都可以,我用哪個(gè)更合適呢蝇庭?
有些同學(xué)可能就開(kāi)始權(quán)量了醉鳖,RelativeLayout更靈活,用這個(gè)吧哮内。但是感覺(jué)LinearLayout更方便啊盗棵,自動(dòng)幫我把這幾個(gè)View分布開(kāi)了,不會(huì)一開(kāi)始就擠在一塊北发。
其實(shí)呢纹因,隨著項(xiàng)目的進(jìn)展,布局會(huì)發(fā)生調(diào)整琳拨,這是再自然不過(guò)的事情瞭恰。
不要讓自己這些『主觀』的思考拖慢進(jìn)度。
今天我從數(shù)據(jù)上來(lái)說(shuō)下在面臨這種情況(兩者都可選擇)時(shí)狱庇,應(yīng)如何選擇惊畏。
注: 當(dāng)然是牢,很多情況會(huì)有其它更好的選擇,我這里僅就這兩者進(jìn)行對(duì)比陕截。
從效率的角度考慮驳棱,選取渲染速度更快的那個(gè)。
我們知道一個(gè)View的繪制包括三個(gè)步驟:
- 測(cè)量 measure
- 布局 layout
- 繪制 draw
這三個(gè)哪個(gè)拖后腿都會(huì)影響渲染效率农曲,我們就來(lái)看看使用不同的布局時(shí)社搅,這三者之間的差距。
|子View| 父View
---|---|---
父View使用RelativeLayout|
這里我們主要關(guān)注 Measure 時(shí)間乳规。
通過(guò)對(duì)比我們可以看到形葬,父View使用LinearLayout時(shí),父親和孩子的Measure時(shí)間是相差無(wú)幾的暮的。
而父View使用RelativeLayout時(shí)笙以,父親幾乎是孩子的兩倍。
RelativeLayout 的子View經(jīng)常會(huì)被measure兩次冻辩。
結(jié)論
- 兩者都可使用猖腕,并且層數(shù)不受影響的前提下,盡量使用LinearLayout.
- 若是層數(shù)受影響恨闪,優(yōu)先考慮層數(shù)少的倘感。(這點(diǎn)會(huì)在以后的文章中談到)