ConstraintLayout is a type of layout available in the Android Support repository for building flexible and efficient layouts. The Layout Editor uses constraints to determine the position of a UI element within the layout. A constraint represents a connection or alignment to another view, the parent layout, or an invisible guideline. . It’s often described as a more powerful Relative Layout. With Constraint Layout you can define complex layouts without building complicated view hierarchies. Although constraint layout was capable of doing great work since from version 1.0.0 but there were few things that were missing and it’s good see them in the latest version. Recently android studio team released ConstraintLayout 1.1.0.There are lot of new features like barriers , groups and faster than 1.0 release.

Android Gradle

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

Circular Constraints

This is a new type Constraint in Constraint Layout 1.1, constraintCircle,Its Specify constraints along a circle. Instead of providing horizontal and vertical margins, as you specify angle and radius of the circle.

app:layout_constraintCircle — Get aligned with this view
app:layout_constraintCircleAngle — Angle from the aligned view
app:layout_constraintCircleRadius — Distance from the aligned view

Barrier

When you have several views if you want to change the size of view on runtime you can use barrier to constraint element.

A barrier can be set to the start, end, top, bottom — here blue box always remain to the right side of the barrier where barrier guideline is calculated based of max width among the gray color box.

<Button
    android:id="@+id/btName"
    android:layout_width="100dp"
    android:layout_height="wrap_content" />

<Button
    android:id="@+id/btAge"
    android:layout_width="150dp"
    android:layout_height="wrap_content"
    app:layout_constraintTop_toBottomOf="@+id/btName" />

<android.support.constraint.Barrier
    android:id="@+id/barrier"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:barrierDirection="end"
    app:constraint_referenced_ids="btName,btAge" />

<Button
    android:id="@+id/btAddress"
    android:layout_width="120dp"
    android:layout_height="wrap_content"
    app:layout_constraintStart_toEndOf="@+id/barrier" />

Percents

In Constraint Layout 1.1  easily you can constrain any view to a percentage width or height. layout_constraintWidth_percent and layout_constraintHeight_percent attributes.

<Button
   android:layout_width="0dp"
   android:layout_height="wrap_content"
   android:layout_constraintWidth_percent="0.7" />

Groups

what this can do is that if multiple views visibility need to set as visible or gone it can do it with an ease. This is useful when you have several elements that are shown or displayed together.

<android.support.constraint.Group
    android:id="@+id/profile"
    app:constraint_referenced_ids="profile_name,profile_image" />

Chains

In ConstraintLayout 1.1   fixed several bugs with chains and made them work on more views.In This feature you can make a chain adding constraint both direction.

The attribute layout_constraintHorizontal_weight and layout_constraintVertical_weight will control how the space will be distributed among the elements using MATCH_CONSTRAINT