Google I/O 2016 筆記之Layout新世界-ConstraintLayout

2018-06-06 14:25 更新

引子

首先來(lái)讓我們回顧一下 Android 目前已有的布局有哪些。

圖片來(lái)自Google官方

<!-- more -->

我想大家使用比較多的應(yīng)該是 LinearLayoutRelativeLayout 這兩種布局文件.

實(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ō),那 LinearLayoutRelativeLayout 混合使用不就可以解決問(wèn)題了?

額...這...(兄弟,你不按套路出牌?。?/p>

開(kāi)個(gè)玩笑,因?yàn)樽鳛锳ndroid官方來(lái)說(shuō),他們肯定有更優(yōu)雅的方式嘛。這就是今天的主角-ConstraintLayout

ConstraintLayout 簡(jiǎn)介

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)自Google官方

看起來(lái)很Cool!是不是。

ConstraintLayout 使用

準(zhǔn)備工作

  • Android Studio 升級(jí)到2.2 preview
  • 添加 compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha3'dependencies

顯示

在布局編輯器中有兩種顯示方式:Design 和 Blueprint . show

Constraints

這部分內(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 處.

圖片來(lái)自Google官方

操作類型的說(shuō)明

圖片來(lái)自Google官方

上圖中顯示了該控件所能操作的類型

調(diào)整控件大小的操作: Resize Handle

建立控件之間邊關(guān)聯(lián)的操作: Side Constraint Handle

控件基準(zhǔn)線約束的操作: Baseline Constraint Handle

示例

需要進(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)晚 ...

相關(guān)鏈接

Android Layouts: a new world - Google I/O 2016--ConstraintLayout官方視頻介紹(需翻墻) Using ConstraintLayout to design your views--官方指導(dǎo)教程(需翻墻)

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)