孰優(yōu)孰劣——RelativeLayout 對比ConstraintLayout

原創(chuàng)文章昙沦,轉(zhuǎn)載請注明出處:http://www.reibang.com/p/6ec3d71eaa5f

Android 開發(fā)中辩块,我們常用的布局就是RelativeLayout ,而ConstraintLayout出現(xiàn)后,按照谷歌官方的看法葱轩,就是要將ConstraintLayout來替代RelativeLayout的屠阻,那么這兩者又有什么區(qū)別呢,有什么優(yōu)劣性呢策菜,這就需要我們動一番腦筋了嚷兔。

RelativeLayout

這里為什么要將RelativeLayout與ConstriantLayout 來進(jìn)行對比呢,將其他的布局來對比呢做入,其他布局的使用范圍都不如RelativeLayout廣冒晰,用的也少,我們只需要對比了竟块,明白了RelativeLayout和ConstraintLayout的區(qū)別壶运,其他的布局相差的并不大。

ConstraintLayout

先短暫回顧一下RelativeLayout:相對布局浪秘,控件的位置是按照相對位置來計算的蒋情,控件之間的位置具有相對對應(yīng)的關(guān)系,是最靈活最常用的布局耸携。
而ConstraintLayout:約束布局棵癣,控件之間、控件與父布局之間具有約束關(guān)系夺衍,控件的位置是按照約束來計算的狈谊,使用ConstraintLayout布局時,也可以添加引導(dǎo)線(Guideline)來輔助布局沟沙,所有的布局可以在如圖所示的界面上通過拖動和調(diào)整來完成河劝,相對于RelativeLayout這一點(diǎn)要方便許多。優(yōu)點(diǎn)1:布局調(diào)整更為方便矛紫,所見即所得

如圖

舉個小例子

簡書

如圖是簡書APP的界面赎瞎,如果采用RelativeLayout我們要如何布局得到這個界面呢?首先最上面的是AppToolBar颊咬,這個直接在ToolBarLayout中進(jìn)行布局即可务甥。其次下面列表牡辽,有多行,雖然每行的布局是一樣的敞临,內(nèi)容卻不同催享,可以把它統(tǒng)一寫到一個xml中再使用include標(biāo)簽引入,最后在代碼中修改內(nèi)容哟绊,但是這樣就不實(shí)際了因妙,代碼的冗余復(fù)雜度并沒有改善。如果直接在xml 中進(jìn)行布局票髓,那么每一行不同的圖標(biāo)和文字攀涵,在布局的過程中可能會混亂,為了方便對每一行來管理洽沟,就需要嵌套linearLayout以故。還有一種布局的方式就是使用ListView來布局,再使用代碼加載裆操,這種方式應(yīng)該是最優(yōu)的吧怒详。
如果采用ConstraintLayout呢,那些使用代碼的方式都不談踪区,這都是相似的昆烁。而在xml文件中布局呢,就不需要嵌套linearLayout了缎岗,直接添加控件静尼,將控件之間的約束調(diào)整好即可,并且由于ConstraintLayout的特性传泊,我們可以很方便的就將各布局給對齊好鼠渺,如圖所示做了個簡單的示例。
示例

這樣布局以后眷细,控件的位置就能夠?qū)R了拦盹。
優(yōu)點(diǎn)2:布局之間相對位置更好控制

動態(tài)新建布局

上面講的都是在xml代碼中靜態(tài)的對布局進(jìn)行調(diào)整,但是實(shí)際開發(fā)過程中溪椎,動態(tài)的控件也不少見普舆,比如要顯示一個對話框、或者顯示登錄按鈕池磁,甚至是彈出一個讓人深惡痛絕的廣告吧奔害,都需要在代碼中動態(tài)的添加布局,添加布局的基本步驟就是先找到我們要新建布局的view地熄,通常是一個Layout,然后調(diào)用addView方法芯杀,傳入一個新的view端考,就可以將新的view添加到我們的界面中來了雅潭。
光添加view還不足夠,我們還得控制view的位置却特,當(dāng)然這個view的位置通常是在左上角扶供,但是這樣不美觀,不符合我們對界面的要求裂明。
在RelativeLayout中椿浓,我們常用LayoutParams來對新建的控件進(jìn)行控制,尺寸和控件等闽晦,ConstraintLayout也可以使用LayoutParams扳碍,具體的不多說,可參看官網(wǎng)仙蛉。
而ConstraintLayout引入的一個新的類笋敞,ConstraintSet,這個就大有文章了荠瘪,這個類的功能更強(qiáng)夯巷,對控件都可以在代碼中動態(tài)的調(diào)整id,如圖

2.gif

因為ConstraintLayout這些強(qiáng)大的特性哀墓,使得它的應(yīng)用面很廣趁餐,同時,ConstraintLayout也可以方便的創(chuàng)造出動畫效果篮绰,這個可以參考我的另一篇文章ConstraintLayout基礎(chǔ) 及動態(tài)控件(動畫效果)
由上面這些可以得出ConstraintLayout的優(yōu)點(diǎn)3澎怒,動態(tài)創(chuàng)建布局方便,對控件的控制能力更加強(qiáng)大阶牍,可以實(shí)現(xiàn)動畫效果

性能

過后再更新喷面,性能更好,渲染速度更快走孽。

總結(jié)

綜合上面這些來說惧辈,ConstraintLayout的功能更加強(qiáng)大,使用起來更加方便磕瓷,不論是靜態(tài)布局還是動態(tài)布局都具有良好的支持盒齿,同時可以完成動畫效果,性能上也更加優(yōu)越困食,由此看來边翁,ConstraintLayout完全替代RelativeLayout指日可待。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末硕盹,一起剝皮案震驚了整個濱河市符匾,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瘩例,老刑警劉巖啊胶,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件甸各,死亡現(xiàn)場離奇詭異,居然都是意外死亡焰坪,警方通過查閱死者的電腦和手機(jī)趣倾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來某饰,“玉大人儒恋,你說我怎么就攤上這事∏” “怎么了诫尽?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長瘟仿。 經(jīng)常有香客問我箱锐,道長,這世上最難降的妖魔是什么劳较? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任驹止,我火速辦了婚禮,結(jié)果婚禮上观蜗,老公的妹妹穿的比我還像新娘臊恋。我一直安慰自己,他們只是感情好墓捻,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布抖仅。 她就那樣靜靜地躺著,像睡著了一般砖第。 火紅的嫁衣襯著肌膚如雪撤卢。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天梧兼,我揣著相機(jī)與錄音放吩,去河邊找鬼。 笑死羽杰,一個胖子當(dāng)著我的面吹牛渡紫,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播考赛,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼惕澎,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了颜骤?” 一聲冷哼從身側(cè)響起唧喉,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后欣喧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體腌零,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡梯找,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年唆阿,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片锈锤。...
    茶點(diǎn)故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡驯鳖,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出久免,到底是詐尸還是另有隱情浅辙,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布阎姥,位于F島的核電站记舆,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏呼巴。R本人自食惡果不足惜泽腮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望衣赶。 院中可真熱鬧诊赊,春花似錦、人聲如沸府瞄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽遵馆。三九已至鲸郊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間货邓,已是汗流浹背秆撮。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留逻恐,地道東北人像吻。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像复隆,于是被迫代替她去往敵國和親拨匆。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,504評論 25 707
  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程挽拂,因...
    小菜c閱讀 6,358評論 0 17
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫惭每、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,024評論 4 62
  • 原文鏈接:https://github.com/opendigg/awesome-github-android-u...
    IM魂影閱讀 32,901評論 6 472
  • 接著上次我們講解的時間線MindMap之任務(wù)功能,我們已經(jīng)能把時間線MindMap的大體框架給列出來了台腥,基本上也算...
    wv橙子閱讀 560評論 0 0