4. Desenhando a tela do aplicativo
4.1. O ConstrainLayout
O ConstraintLayout permite criar layout com views relacionadas entre si e com o parent de uma forma muito mais flexível sem precisar agrupar layouts uns dentro dos outros.
A razão para evitar o agrupamento de ViewGroups é devido ao tempo de renderização que pode crescer exponencialmente a cada nível de agrupamento. Se esse tempo aumenta, o aplicativo irá perder frames no que resulta em transições não tão suáveis.
Uma das maiores vantagens que o ConstraintLayout traz é a velocidade. Além do nos permitir criar UIs sem agrupar viewGroups, o editor de layouts do Android Studio facilita ainda mais o nosso trabalho. Veja abaixo um exemplo de layout criado usando o ConstraintLayout com a visualização de blueprint dentro do Android Studio:

Você pode conferir o posicionamento dos elementos, mas o mais importante são as suas restrições (constraint). Identificadas pelas setas, elas são as configurações que permitem um elemento configurar seu posicionamento em relação ao outro e podem possuir também um tamanho referente a margem (distância) entre um componente e outro.
Com o ConstraintLayout controlamos o posicionamento com os atributos:
- layout_constraintLeft_toLeftOf : Alinha o lado esquerdo da view desejada com o lado esquerdo da outra view
- layout_constraintLeft_toRightOf: Alinha o lado esquerdo da view desejada com o lado direito da outra view
- layout_constraintRight_toLeftOf: Alinha o lado direito da view desejada com o lado esquerdo da outra view
- layout_constraintRight_toRightOf: Alinha o lado direito da view desejada com o lado esquerdo da outra view
- layout_constraintTop_toTopOf: Alinha o lado de cima da view desejada com o lado de cima da outra view
- layout_constraintTop_toBottomOf: Alinha o lado de cima da view desejada com o lado de baixo da outra view
- layout_constraintBottom_toTopOf: Alinha o lado de baixo da view desejada com o lado de cima da outra view
- layout_constraintBottom_toBottomOf: Alinha o lado de baixo da view desejada com o lado de baixo da outra view
Nas próximas seções vamos ilustrar na prática como fazer a configuração dessas restrições com o editor de layout do Android Studio.