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
自动添加约束的方式主要有两种,一种叫Autoconnect,一种叫Inferencexml