James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

72
1

Transcript of James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

Page 1: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

1

Page 2: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

INTRODUCTIONI work at Udacity. I'm Curriculum Lead for Android.

2

Page 3: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

OUR NANODEGREE PROGRAMS

Android Basics and Android

Also Data Analyst, Machine Learning, Web Dev, iOShttp://go.udacity.com/android

3

Page 4: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

MATERIAL DESIGN FOR ANDROIDDEVELOPERS

https://www.udacity.com/course/material-design-for-android-developers--ud862

4

Page 5: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

AGENDA

A Quick Guide to RenderingPitfalls of Some Layout ViewGroupsConstraint LayoutMore Awesomeness You Can Do With It

5

Page 6: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

THE ANDROID VIEW CYCLE

Measure PassLayout PassDrawing the Things

6

Page 7: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

MEASURING A VIEW

7

Page 8: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

ONMEASURE(WIDTHMEASURESPEC,HEIGHTMEASURESPEC)

8

Page 9: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

MEASURESPEC

modesize

9

Page 10: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

MEASURESPEC MODES

EXACTLYAT MOSTUNSPECIFIED

10

Page 11: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

LAYOUT OF A VIEW

11

Page 12: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

ONLAYOUT(CHANGED, L, T, R, B)

12

Page 13: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

DOUBLE TAXATION

13

Page 14: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

WHY IS THIS IMPORTANT?

14

Page 15: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

16MS

15

Page 16: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

OKAY I'LL USE RELATIVELAYOUT

INSTEAD OF NESTEDLINEARLAYOUT

16

Page 17: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

GRIDLAYOUT

17

Page 18: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

CONSTRAINTLAYOUT

18

Page 19: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

CONSTRAINTLAYOUT IS A SUPPORTLIBRARY

19

Page 20: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

SUPPORTED BACK TO API 9(GINGERBREAD)

20

Page 21: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

WHAT ARE CONSTRAINTS?

21

Page 22: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

THE NEW LAYOUT EDITORDesign ViewBlueprint View

22

Page 23: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

DESIGN VIEW

23

Page 24: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

BLUEPRINT VIEW

24

Page 25: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

ATTRIBUTES VIEW

25

Page 26: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

CLEARING CONSTRAINTS

26

Page 27: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

27

Page 28: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

28

Page 29: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

29

Page 30: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

ADDING CONSTRAINTS

30

Page 31: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

31

Page 32: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

32

Page 33: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

33

Page 34: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

34

Page 35: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

35

Page 36: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

UNDERSTANDING THE NEWATTRIBUTES VIEW

36

Page 37: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

37

Page 38: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

38

Page 39: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

39

Page 40: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

40

Page 41: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

MORE ABOUT MATCH_PARENT

41

Page 42: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

42

Page 43: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

CHAINS

43

Page 44: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

44

Page 45: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

45

Page 46: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

CHAIN STYLES

46

Page 47: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

HOW MANY DESIGNERS IN THEROOM?

47

Page 48: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

AND HOW MANY DEVELOPERS?

48

Page 49: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

DESIGNERS AND DEVELOPERS

49

Page 50: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

DESIGNERS

DESIGNERS sometimes design things that are:hard to represent in the target platformdifficult to understand in static drawinds

50

Page 51: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

DEVELOPERS

DEVELOPERS o�en optimize for tersenessand will silently drop parts of the design they don'tunderstand

51

Page 52: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

DEALING WITH MOCKS

52

Page 53: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

53

Page 54: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

STRATEGIES TO CONVERT MOCKS TO AREAL UI

54

Page 55: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

SET MARGINS INDIVIDUALLY

55

Page 56: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

PUT THEM IN ANOTHER LAYOUT

56

Page 57: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

USE ANDROID.WIDGET.VIEW ELEMENTSAS PLACEHOLDERS

57

Page 58: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

ENTER VIRTUAL HELPEROBJECTS

GuidelinesBarriersGroups

58

Page 59: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

GUIDELINES

59

Page 60: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

60

Page 61: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

61

Page 62: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

BARRIERS

62

Page 63: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

CongressVolksvertretung

63

Page 64: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

GROUPS<android.support.constraint.Group 

              android:id="@+id/group" 

              android:layout_width="wrap_content" 

              android:layout_height="wrap_content" 

              android:visibility="visible" 

              app:constraint_referenced_ids="button4,button9" /> 

64

Page 65: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

MOAR STUFF

65

Page 66: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

PLACEHOLDERS

66

Page 67: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

SETCONTENTID(…)

67

Page 68: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

CIRCULAR POSITIONING

68

Page 69: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

69

Page 70: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

<Button android:id="@+id/buttonA" ... /> 

  <Button android:id="@+id/buttonB" ... 

      app:layout_constraintCircle="@+id/buttonA" 

      app:layout_constraintCircleRadius="100dp" 

      app:layout_constraintCircleAngle="45" />

70

Page 71: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

RECAPDouble Taxation is badUse Constraint Layout for nearly ALL THE THINGS

71

Page 72: James Williams - Demystifying Constraint Layout - Codemotion Milan 2017

QUESTIONS?

72