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