ConstraintLayout的簡單介紹和使用

ConstraintLayout是Android Studio 2.2中主要的新增功能之一,也是Google在去年的I/O大會上重點宣傳的一個功能。咱們都知道,在傳統的Android開發當中,界面基本都是靠編寫XML代碼完成的,雖然Android Studio也支持可視化的方式來編寫界面,可是操做起來並不方便,我也一直都不推薦使用可視化的方式來編寫Android應用程序的界面。java

而ConstraintLayout就是爲了解決這一現狀而出現的。它和傳統編寫界面的方式偏偏相反,ConstraintLayout很是適合使用可視化的方式來編寫界面,但並不太適合使用XML的方式來進行編寫。固然,可視化操做的背後仍然仍是使用的XML代碼來實現的,只不過這些代碼是由Android Studio根據咱們的操做自動生成的。android

另外,ConstraintLayout還有一個優勢,它能夠有效地解決佈局嵌套過多的問題。咱們平時編寫界面,複雜的佈局總會伴隨着多層的嵌套,而嵌套越多,程序的性能也就越差。ConstraintLayout則是使用約束的方式來指定各個控件的位置和關係的,它有點相似於RelativeLayout,但遠比RelativeLayout要更強大。app

爲了要使用ConstraintLayout,咱們須要在app/build.gradle文件中添加ConstraintLayout的依賴,以下所示。ide

dependencies {
    compile 'com.android.support.constraint:constraint-layout:1.0.0-beta4'
}

 目前ConstraintLayout庫最新的版本是1.0.0-beta4,尚未推出正式穩定版本佈局

打開res/layout/activity_main.xml文件,Android Studio自動建立的這個佈局默認使用的是RelativeLayout,咱們能夠經過以下操做將它轉換成ConstraintLayout。性能

 

轉換完成以後,原RelativeLayout中的內容也會自動轉換到ConstraintLayout中gradle

 

Inspector最中間的那個正方形區域,它是用來控制控件大小的。一共有三種模式可選,每種模式都使用了一種不一樣的符號表示,點擊符號便可進行切換。ui

  • 表示wrap content,這個咱們很熟悉了,不須要進行什麼解釋。
  • 表示固定值,也就是給控件指定了一個固定的長度或者寬度值。
  • 表示any size,它有點相似於match parent,但和match parent並不同,是屬於ConstraintLayout中特有的一種大小控制方式,下面咱們來重點講解一下。

  自動添加約束的方式主要有兩種,一種叫Autoconnect,一種叫Inferencexml