首先來(lái)讓我們回顧一下 Android 目前已有的布局有哪些。
<!-- more -->
我想大家使用比較多的應(yīng)該是 LinearLayout
和 RelativeLayout
這兩種布局文件.
實(shí)際在使用過(guò)程中,這兩種布局都會(huì)有各自的不足之處。比如你要用 LinearLayout
來(lái)實(shí)現(xiàn)一個(gè)復(fù)雜的布局,那么就會(huì)產(chǎn)生一個(gè)很深的層級(jí)嵌套,而這顯然會(huì)帶來(lái)一定的性能問(wèn)題。但是如果你要使用 RelativeLayout 來(lái)實(shí)現(xiàn)的話,你會(huì)發(fā)現(xiàn)無(wú)論在使用上還是布局編輯器上都非常難用。
有的小伙伴說(shuō),那 LinearLayout
和 RelativeLayout
混合使用不就可以解決問(wèn)題了?
額...這...(兄弟,你不按套路出牌?。?/p>
開(kāi)個(gè)玩笑,因?yàn)樽鳛锳ndroid官方來(lái)說(shuō),他們肯定有更優(yōu)雅的方式嘛。這就是今天的主角-ConstraintLayout
ConstraintLayout
直譯的話,就是約束性布局.我們來(lái)看官方是怎么來(lái)介紹它的:
A small , unbundled library compatible with API level 9 .
Designed to reduce nesting .
Designed to be used in Studio .
一句話,它很棒,你用不用!
可是我想知道 ConstraintLayout
到底是個(gè)什么呢 ?
ConstraintLayout does what RelativeLayout does , but more .
對(duì),你可以理解為一個(gè)增強(qiáng)版的 RelativeLayout
.
而相對(duì)于RelativeLayout
,ConstraintLayout
則更加靈活,性能出眾,更主要的是,布局編輯器終于可以不那么雞肋了 .
看起來(lái)很Cool!是不是。
compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha3'
到 dependencies
中
在布局編輯器中有兩種顯示方式:Design 和 Blueprint .
這部分內(nèi)容參考(偷個(gè)懶)了官方指導(dǎo)教程 .
ConstraintLayout
的重點(diǎn)在于Constraints,可以直譯為約束,或者關(guān)聯(lián)也可以。Constraints可以幫助你保持控件對(duì)齊. 你可以使用錨點(diǎn)(比如下圖展示的Button2的四個(gè)邊上圓點(diǎn))來(lái)確定與之關(guān)聯(lián)控件之間的對(duì)齊規(guī)則. 例如, 設(shè)置一個(gè)從 button 2 的左邊到 button 1 的右邊的約束(見(jiàn)下圖),意味著控件 button 2 將會(huì)位于 button 1 右邊 56dp 處.
上圖中顯示了該控件所能操作的類型
調(diào)整控件大小的操作:
建立控件之間邊關(guān)聯(lián)的操作:
控件基準(zhǔn)線約束的操作:
需要進(jìn)一步了解或者感興趣的小伙伴可以直接去看看 constraint-layout 這是Android官方提供的代碼示例.
關(guān)于 ConstraintLayout 的用法這里只簡(jiǎn)單做個(gè)介紹,目前
ConstraintLayout
?還處在一個(gè)快速迭代更新的階段,所以并不推薦在實(shí)際項(xiàng)目中去使用,就我個(gè)人的實(shí)際體驗(yàn)上,確實(shí)還是存在著一些問(wèn)題,當(dāng)然這并不影響我們?nèi)チ私馑?/p>
正如 ConstraintLayout 官方介紹視頻中多次強(qiáng)調(diào)的那一句話:
Our job is to make your life easier.
我相信很快 ConstraintLayout 會(huì)給Android 開(kāi)發(fā)者帶來(lái)一個(gè)不一樣的體驗(yàn) .
雖然我感覺(jué)它來(lái)的有點(diǎn)晚 ...
Android Layouts: a new world - Google I/O 2016--ConstraintLayout官方視頻介紹(需翻墻) Using ConstraintLayout to design your views--官方指導(dǎo)教程(需翻墻)
更多建議: