Constraint Layout
Constraint Layout
RelativeLayout supercharged to the next level
2
Slide 4
Slide 4 text
Constraint Layout
Constraint Layout
RelativeLayout supercharged to the next level
Apply constraints with respect to each other
2
Slide 5
Slide 5 text
Constraint Layout
Constraint Layout
RelativeLayout supercharged to the next level
Apply constraints with respect to each other
Helper views such as Barriers, Groups
2
Slide 6
Slide 6 text
Constraint Layout
Constraint Layout
RelativeLayout supercharged to the next level
Apply constraints with respect to each other
Helper views such as Barriers, Groups
Animation Support
2
Slide 7
Slide 7 text
Constraint Layout
Constraint Layout
RelativeLayout supercharged to the next level
Apply constraints with respect to each other
Helper views such as Barriers, Groups
Animation Support
Keep a flat hierarchy of views
2
Slide 8
Slide 8 text
Constraints
Constraints
3
Slide 9
Slide 9 text
Position Constraint
Position Constraint
4
Slide 10
Slide 10 text
Position Constraint
Position Constraint
layout_constraintXXX_toXXXof
4
Slide 11
Slide 11 text
Position Constraint
Position Constraint
layout_constraintXXX_toXXXof
Horizontal: Left, Right, Start, End
4
Slide 12
Slide 12 text
Position Constraint
Position Constraint
layout_constraintXXX_toXXXof
Horizontal: Left, Right, Start, End
Vertical: Top, Bottom, Baseline
4
Slide 13
Slide 13 text
Position Constraint
Position Constraint
layout_constraintXXX_toXXXof
Horizontal: Left, Right, Start, End
Vertical: Top, Bottom, Baseline
w.r.t `parent` or another view
4
Slide 14
Slide 14 text
Position Constraint
Position Constraint
5
Slide 15
Slide 15 text
Position Constraint
Position Constraint
5
Slide 16
Slide 16 text
Position Constraint
Position Constraint
app:layout_constraintLeft_toLeftOf="parent"
5
Slide 17
Slide 17 text
Position Constraint
Position Constraint
app:layout_constraintLeft_toLeftOf="parent"
5
Slide 18
Slide 18 text
Position Constraint
Position Constraint
6
Slide 19
Slide 19 text
Position Constraint
Position Constraint
6
Slide 20
Slide 20 text
Position Constraint
Position Constraint
app:layout_constraintRight_toRightOf="parent"
6
Slide 21
Slide 21 text
Position Constraint
Position Constraint
app:layout_constraintRight_toRightOf="parent"
6
Slide 22
Slide 22 text
Position Constraint
Position Constraint
7
Slide 23
Slide 23 text
Position Constraint
Position Constraint
7
Slide 24
Slide 24 text
Position Constraint
Position Constraint
7
Slide 25
Slide 25 text
Position Constraint
Position Constraint
A B
7
Slide 26
Slide 26 text
Position Constraint
Position Constraint
A B
7
Slide 27
Slide 27 text
Position Constraint
Position Constraint
8
Slide 28
Slide 28 text
Position Constraint
Position Constraint
8
Slide 29
Slide 29 text
Position Constraint
Position Constraint
8
Slide 30
Slide 30 text
Position Constraint
Position Constraint
A
8
Slide 31
Slide 31 text
Position Constraint
Position Constraint
A
8
Slide 32
Slide 32 text
Position Constraint
Position Constraint
A
Left margin not respected
8
Slide 33
Slide 33 text
Dimension Constraint
Dimension Constraint
9
Slide 34
Slide 34 text
Dimension Constraint
Dimension Constraint
9
Slide 35
Slide 35 text
Dimension Constraint
Dimension Constraint
9
Slide 36
Slide 36 text
Dimension Constraint
Dimension Constraint
A
9
Slide 37
Slide 37 text
Dimension Constraint
Dimension Constraint
10
Slide 38
Slide 38 text
Dimension Constraint
Dimension Constraint
10
Slide 39
Slide 39 text
Dimension Constraint
Dimension Constraint
10
Slide 40
Slide 40 text
Dimension Constraint
Dimension Constraint
A
10
Slide 41
Slide 41 text
Dimension Constraint
Dimension Constraint
11
Slide 42
Slide 42 text
Dimension Constraint
Dimension Constraint
11
Slide 43
Slide 43 text
Dimension Constraint
Dimension Constraint
11
Slide 44
Slide 44 text
Dimension Constraint
Dimension Constraint
A
11
Slide 45
Slide 45 text
Centre Positioning
Centre Positioning
12
Slide 46
Slide 46 text
Centre Positioning
Centre Positioning
12
Slide 47
Slide 47 text
Centre Positioning
Centre Positioning
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
12
Slide 48
Slide 48 text
Centre Positioning
Centre Positioning
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
0.5
12
Max and Min Size
Max and Min Size
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintWidth_max="150dp"
15
Slide 63
Slide 63 text
Max and Min Size
Max and Min Size
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintWidth_max="150dp"
15
Slide 64
Slide 64 text
Trick with constraints
Trick with constraints
16
Slide 65
Slide 65 text
Trick with constraints
Trick with constraints
16
Slide 66
Slide 66 text
Trick with constraints
Trick with constraints
16
Slide 67
Slide 67 text
Trick with constraints
Trick with constraints
16
Slide 68
Slide 68 text
Trick with constraints
Trick with constraints
16
Slide 69
Slide 69 text
Visiblity Constraint
Visiblity Constraint
17
Slide 70
Slide 70 text
Visiblity Constraint
Visiblity Constraint
17
Slide 71
Slide 71 text
Visiblity Constraint
Visiblity Constraint
A B
17
Slide 72
Slide 72 text
Visiblity Constraint
Visiblity Constraint
A B
B
17
Slide 73
Slide 73 text
Visiblity Constraint
Visiblity Constraint
A B
B
B
17
Slide 74
Slide 74 text
Chains
Chains
18
Slide 75
Slide 75 text
Chains
Chains
Group views
18
Slide 76
Slide 76 text
Chains
Chains
Group views
Bi-directional constraints
18
Slide 77
Slide 77 text
Chains
Chains
Group views
Bi-directional constraints
A B
Chain
18
Slide 78
Slide 78 text
Chains
Chains
Group views
Bi-directional constraints
Chain head
A B
Chain
18
Barrier
Barrier
A wonderful example
Another example
Example
20
Slide 86
Slide 86 text
Barrier
Barrier
A wonderful example
Another example
Example
Barrier
20
Slide 87
Slide 87 text
Barrier
Barrier
A wonderful example
Another example
Example
Barrier
20
Slide 88
Slide 88 text
Guideline
Guideline
21
Slide 89
Slide 89 text
Guideline
Guideline
Just a vertical or horizontal line
21
Slide 90
Slide 90 text
Guideline
Guideline
Just a vertical or horizontal line
Marked as Gone so not really shown to the user
21
Slide 91
Slide 91 text
Guideline
Guideline
Just a vertical or horizontal line
Marked as Gone so not really shown to the user
Acts as a helper to place views
21
Slide 92
Slide 92 text
Guideline
Guideline
Just a vertical or horizontal line
Marked as Gone so not really shown to the user
Acts as a helper to place views
Can be in percent or fixed value
21
Slide 93
Slide 93 text
Guideline
Guideline
Just a vertical or horizontal line
Marked as Gone so not really shown to the user
Acts as a helper to place views
Can be in percent or fixed value
21
Slide 94
Slide 94 text
Group
Group
22
Slide 95
Slide 95 text
Group
Group
Group views together
22
Slide 96
Slide 96 text
Group
Group
Group views together
Control their visibility
22
Slide 97
Slide 97 text
Group
Group
Group views together
Control their visibility
Views can belong to more than one group
22
Slide 98
Slide 98 text
Group
Group
Group views together
Control their visibility
Views can belong to more than one group
Last one in XML order wins
22
Slide 99
Slide 99 text
Group
Group
Group views together
Control their visibility
Views can belong to more than one group
Last one in XML order wins
22
Slide 100
Slide 100 text
Layout Editor Demo
Layout Editor Demo
23
Slide 101
Slide 101 text
Constraint Set
Constraint Set
24
Slide 102
Slide 102 text
Constraint Set
Constraint Set
Defines the set of constraints applied to views
24
Slide 103
Slide 103 text
Constraint Set
Constraint Set
Defines the set of constraints applied to views
Can be applied to a ConstraintLayout
24
Slide 104
Slide 104 text
Constraint Set
Constraint Set
Defines the set of constraints applied to views
Can be applied to a ConstraintLayout
Can be used to create animations
24
Slide 105
Slide 105 text
Constraint Set
Constraint Set
25
Slide 106
Slide 106 text
Constraint Set
Constraint Set
25
Slide 107
Slide 107 text
Constraint Set
Constraint Set
25
Slide 108
Slide 108 text
Constraint Set
Constraint Set
override fun onCreate(savedInstanceState: Bundle?) {
...
val constraintSet1 = ConstraintSet()
constraintSet1.clone(constraintLayout)
val constraintSet2 = ConstraintSet()
constraintSet2.clone(this, R.layout.activity_main_alt)
var changed = false
findViewById(R.id.button).setOnClickListener {
TransitionManager.beginDelayedTransition(constraintLayout)
val constraint = if (changed) constraintSet1 else constraintSet2
constraint.applyTo(constraintLayout)
changed = !changed
}
}
25
Slide 109
Slide 109 text
Constraint Set
Constraint Set
override fun onCreate(savedInstanceState: Bundle?) {
...
val constraintSet1 = ConstraintSet()
constraintSet1.clone(constraintLayout)
val constraintSet2 = ConstraintSet()
constraintSet2.clone(this, R.layout.activity_main_alt)
var changed = false
findViewById(R.id.button).setOnClickListener {
TransitionManager.beginDelayedTransition(constraintLayout)
val constraint = if (changed) constraintSet1 else constraintSet2
constraint.applyTo(constraintLayout)
changed = !changed
}
}
25
Slide 110
Slide 110 text
Constraint Set - Duplicate
Constraint Set - Duplicate
XML?
XML?
26
Slide 111
Slide 111 text
Constraint Set - Duplicate
Constraint Set - Duplicate
XML?
XML?
Omit non styling attributes from transition XML
26
Slide 112
Slide 112 text
Constraint Set - Duplicate
Constraint Set - Duplicate
XML?
XML?
Omit non styling attributes from transition XML
Constraint set works on constraints and not styles
26
Slide 113
Slide 113 text
Constraint Set - Duplicate
Constraint Set - Duplicate
XML?
XML?
Omit non styling attributes from transition XML
Constraint set works on constraints and not styles
Create constraint set in code
26