Top Banner
CONSTRAINTLAYOUT - DICAS E TRUQUES Coders on Beers - Android
50

Constraint Layout - Dicas e Truques (Luiz Cristófori)

Jan 22, 2018

Download

Technology

concrete
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Constraint Layout - Dicas e Truques (Luiz Cristófori)

CONSTRAINTLAYOUT - DICAS E TRUQUES

Coders on Beers - Android

Page 2: Constraint Layout - Dicas e Truques (Luiz Cristófori)

Apresentação

Luiz Cristofori

•Desenvolvedor Android na Concrete a 2 anos

•Ex-desenvolvedor Java web

•Participação em diversos projetos

•Jogador semi profissional de Street Fighter 5 -Zangief/Vega

Page 3: Constraint Layout - Dicas e Truques (Luiz Cristófori)

CONSTRAINTLAYOUT? O QUE É? PRA QUE SERVE? O QUE VEIO RESOLVER?

Page 4: Constraint Layout - Dicas e Truques (Luiz Cristófori)

•O que é? Pra que serve? Quais problemas veio resolver?

• Um novo tipo de layout (ViewGroup) apresentado no Google I/O de 2016 -juntando-se a outros ViewGroups como: LinearLayout, RelativeLayout, FrameLayout etc.

•Atributos mais intuitivos que tornam o layout simples de ser “montado”

•Facilita o uso do editor gráfico usando drag n’ drop para montar a tela

•Bem mais performático

•Layout com menor hierarquia - mais flat

•Suporte a diferentes tamanhos de tela simplificado

Page 5: Constraint Layout - Dicas e Truques (Luiz Cristófori)

PERFORMANCE

Page 6: Constraint Layout - Dicas e Truques (Luiz Cristófori)

•Performance

•Etapas do SO para desenhar uma tela:

•Measure - Leitura top-down de toda a árvore de views para determinar a largura de cada ViewGroup e consequentemente de seus respectivos filhos

•Layout - Outra leitura top-down para cada ViewGroup determinando a posição de cada filho usando o tamanho da etapa anterior

•Draw - Mais uma leitura top-down que cria um objeto do tipo Canvas para cada elemento na árvore de views enviando uma lista de comandos para a GPU desenhá-lo na tela. Esses comandos contém tamanho e posição obtido nas etapas anteriores

Page 7: Constraint Layout - Dicas e Truques (Luiz Cristófori)

•Performance

Page 8: Constraint Layout - Dicas e Truques (Luiz Cristófori)

SYSTRACE

Page 9: Constraint Layout - Dicas e Truques (Luiz Cristófori)

•Systrace

• Script em python que possibilita a coleta e análise de informações dos processos que estão sendo executados no device

•Possível através do Android Studio

•Gera relatórios contendo alertas e informações detalhadas dado um período de tempo enquanto usa o app

•Combina informações do kernel do Android tais como: uso de CPU, atividade de discos, threads, etapas de layout, etc.

Page 10: Constraint Layout - Dicas e Truques (Luiz Cristófori)

•Performance

•Layout “tradicional”

Page 11: Constraint Layout - Dicas e Truques (Luiz Cristófori)

•ConstraintLayout

•Performance

Page 12: Constraint Layout - Dicas e Truques (Luiz Cristófori)

•Performance

Page 13: Constraint Layout - Dicas e Truques (Luiz Cristófori)

QUANDO USAR?

Page 14: Constraint Layout - Dicas e Truques (Luiz Cristófori)

•Quando usar?

•Layouts complexos e com grande hierarquia entre ViewGroups

•Layout simples - uma view em baixo de outra, por exemplo, pode ser usado o LinearLayout

Page 15: Constraint Layout - Dicas e Truques (Luiz Cristófori)

COMEÇANDO A USAR

Page 16: Constraint Layout - Dicas e Truques (Luiz Cristófori)

•Começando a usar

•Importar lib

e pronto...

Page 17: Constraint Layout - Dicas e Truques (Luiz Cristófori)

CONECTANDO VIEWSCONSTRAINTS

Page 18: Constraint Layout - Dicas e Truques (Luiz Cristófori)

•Conectando views - constraints

•A base de todo ConstraintLayout

•Maneira intuitiva e simples de posicionar diferentes elementos na tela em relação a outros ou ao próprio pai (parent)

•Pode ser feito através do XML ou pelo próprio editor do Android Studio

•Constraints possuem apenas um caminho. Ex.: TextView1 TextView2

•Caso possuam “mão dupla” temos um exemplo de chain

Page 19: Constraint Layout - Dicas e Truques (Luiz Cristófori)

•Conectando views - constraints

•Constraint relacionando uma view com outra

•Constraint relacionando uma view com o parent

•Deletando uma constraint

Page 20: Constraint Layout - Dicas e Truques (Luiz Cristófori)

•Conectando views - constraints

•Tags XML:

•app:layout_constraintStart_toStartOf="@id/view"

•app:layout_constraintLeft_toLeftOf="@id/view"

•app:layout_constraintEnd_toEndOf="@id/view"

•app:layout_constraintRight_toRightOf="@id/view"

•app:layout_constraintTop_toTopOf="@id/view"

•app:layout_constraintBaseline_toBaselineOf="@id/view"

•app:layout_constraintBottom_toBottomOf="@id/view"

•app:layout_constraintStart_toEndOf="@id/view"

•app:layout_constraintLeft_toRightOf="@id/view"

•app:layout_constraintEnd_toStartOf="@id/view"

•app:layout_constraintRight_toLeftOf="@id/view"

•app:layout_constraintTop_toBottomOf="@id/view"

•app:layout_constraintBottom_toTopOf="@id/view"

Page 21: Constraint Layout - Dicas e Truques (Luiz Cristófori)

POSICIONANDO VIEWS

Page 22: Constraint Layout - Dicas e Truques (Luiz Cristófori)

•Posicionando views

•Usando um dos conectores em relação ao parent ou outras views

Page 23: Constraint Layout - Dicas e Truques (Luiz Cristófori)

•Posicionando views

•Bias - Vertical e/ou horizontal

•Valor float entre 0 e 1 que determina a posição de uma view em relação às suas constraints

•Facilita o espaçamento entre views para diferentes tamanhos de telas

Page 24: Constraint Layout - Dicas e Truques (Luiz Cristófori)

DEFININDO O TAMANHO DE UMA VIEW

Page 25: Constraint Layout - Dicas e Truques (Luiz Cristófori)

•Definindo o tamanho de uma view

•O antigo match_parent deu lugar ao match_constraint ou 0dp

•Com isso a view usa todo o espaço possível para seu conteúdo levando em consideração os limites dado pelas suas constraints

Page 26: Constraint Layout - Dicas e Truques (Luiz Cristófori)

ASPECT RATIO

Page 27: Constraint Layout - Dicas e Truques (Luiz Cristófori)

•Aspect Ratio

•Sendo a largura ou altura de alguma view 0dp ou match_constraint podemos dar uma determinada proporção para essa view

•Através do atributo layout_constraintDimensionRatio definimos essa porporção que será mantida para diferentes tamanhos de tela

•Muito usado em ImageViews

•Uma medida (altura ou largura) recebe um valor proporcional a outra medida definida pelo aspect ratio

Page 28: Constraint Layout - Dicas e Truques (Luiz Cristófori)

•Aspect Ratio

Page 29: Constraint Layout - Dicas e Truques (Luiz Cristófori)

ALINHANDO VIEWS

Page 30: Constraint Layout - Dicas e Truques (Luiz Cristófori)

•Alinhamento horizontal

•Horizontal com uma margem

•Alinhamento usando baseline

•Alinhando views

Page 31: Constraint Layout - Dicas e Truques (Luiz Cristófori)

•Maneira fácil de centralizaruma view em relação a outra de maneira bem simples

•Conecta-se o contraint top e bottom de uma view com a que deseja centralizar

•O editor ajuda bastante

•Alinhando views

Page 32: Constraint Layout - Dicas e Truques (Luiz Cristófori)

CHAINS

Page 33: Constraint Layout - Dicas e Truques (Luiz Cristófori)

•Similar ao LinearLayout quando usado peso (weight) ao invés de uma largura ou altura pré definida

•Posiciona as views conectadas pelas chains de maneira organizada na tela

•Muito usado em views que precisam ficar alinhadas uma com outra. Ex.: 3 botões separados por espaços iguais

•Possui 4 modos possíveis de exibição e alinhamento entre as views

•Chains

Page 34: Constraint Layout - Dicas e Truques (Luiz Cristófori)

•1 - Spread (default) - Views são posicionadas com espaçamento igual entre elas

•2 - Spread inside - Views da ponta ficam mais próximas do parent

•3 -Weighted - Pode ser usado junto com o modo Spread e/ou Spread inside onde podemos definir um peso maior para alguma view que queremos dar mais destaque

•4 - Packed - Views ficam mais próximas uma da outra

•Chains

Page 35: Constraint Layout - Dicas e Truques (Luiz Cristófori)

•Chains

Page 36: Constraint Layout - Dicas e Truques (Luiz Cristófori)

GUIDELINE

Page 37: Constraint Layout - Dicas e Truques (Luiz Cristófori)

•Linha usada como referência para organizar e alinhar outras views

•Pode ser horizontal e vertical

•Aceita valor de porcentagem para determinar a sua posição

•Similar as linhas guias de softwares disponíveis para designers

•Guideline

Page 38: Constraint Layout - Dicas e Truques (Luiz Cristófori)

•Guideline

•Guideline com valor fixo - start ou end

Page 39: Constraint Layout - Dicas e Truques (Luiz Cristófori)

•Guideline

•Guideline com percentual

Page 40: Constraint Layout - Dicas e Truques (Luiz Cristófori)

•Guideline

•Relacionando uma view com uma guideline

Page 41: Constraint Layout - Dicas e Truques (Luiz Cristófori)

BARRIERS

Page 42: Constraint Layout - Dicas e Truques (Luiz Cristófori)

•Muito usado quando existe a possibilidade de acontecer uma mudança de layout dado a localização do device, por exemplo

•Mantém as views selecionadas dentro de um espaço que é respeitado pelas demais views

•Evita que uma view fica por baixo da outra

•Introduzido na versão beta do constraintLayout

•Barriers

Page 43: Constraint Layout - Dicas e Truques (Luiz Cristófori)

•Barriers

Page 44: Constraint Layout - Dicas e Truques (Luiz Cristófori)

GROUPS

Page 45: Constraint Layout - Dicas e Truques (Luiz Cristófori)

•Usado para agrupar diferentes views e aplicar o mesmo comportamento a elas

•Exemplo, quando nosso layout muda dado alguma resposta da API e devemos esconder algumas views e exibir outras

•Adicionado na versão beta do constraintLayout

•Groups

Page 46: Constraint Layout - Dicas e Truques (Luiz Cristófori)

•Groups

Page 47: Constraint Layout - Dicas e Truques (Luiz Cristófori)

FINALIZANDO

Page 48: Constraint Layout - Dicas e Truques (Luiz Cristófori)

•Finalizando

Page 49: Constraint Layout - Dicas e Truques (Luiz Cristófori)

PERGUNTAS?!

Page 50: Constraint Layout - Dicas e Truques (Luiz Cristófori)

Centro

Av. Presidente Wilson,

231 - 29º andar

(21) 2240-2030

Cidade Monções

Av. Nações Unidas,

11.541 - 3º andar

(11) 4119-0449

Savassi

Av. Getúlio Vargas, 671

Sala 800 - 8º andar

(31) 3360-8900

www.concrete.com.br