Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Custom View Components

Custom View Components

Talk for Android Meetup Belo Horizonte - Abril 2018

Ana Coimbra

April 24, 2018
Tweet

More Decks by Ana Coimbra

Other Decks in Programming

Transcript

  1. O que é? É a base para qualquer componente de

    interface gráfica. São responsáveis por desenhar os componentes e por tratar eventos.
  2. Desenhando O desenho de uma view é feito percorrendo a

    árvore de componentes e gravando qualquer tipo de atualização que deve ser feita
  3. Tratamento de eventos Ao disparar um evento para determinado componente,

    ele deve ser tratado e retornado aos listeners.
  4. Porque? Mesmo que dê um certo trabalho, existem vantagens em

    criar uma Custom View • Reusabilidade • Encapsulamento • Performance
  5. Extends [ViewGroup] Adicionando um conjunto de widgets é possível criar

    um componente que possui um comportamento específico.
  6. Extends [Widget] Dessa forma, é possível aproveitar o comportamento padrão

    de determinado widget e fazer customizações mais simples
  7. Antes de começar, temos que lembrar que... O componente deve

    encapsular o que for interno e específico dela e prover uma interface para fácil implementação O componente deve usar os recursos de CPU e memória de forma eficiente
  8. O comonente deve ... Estar de acordo com os padrões

    do Android Prover atributos de estilo que funcionam no XML Ser compatível com diversas plataformas Ser acessível
  9. Criando a sub classe • Criar uma classe que estende

    de View, algum ViewGroup ou algum Widget • Criar construtores que recebem o contexto e uma coleção de atributos e passá-los a super classe
  10. Definindo os estilos • Necessário para controlar os atributos e

    comportamentos do componente • Especificar os valores que são aceitáveis para cada atributo
  11. Obtendo os estilos • Recuperar atributos em tempo real •

    Aplicar valores dos atributos ao componente • Não recuperar os valores diretos do AttributeSet
  12. Customizando atributos e eventos • invalidate() - importante chamá-lo após

    qualquer mudança nas propriedades do componente que modificam sua aparência para que ele possa ser redesenhado de forma correta.
  13. Customizando atributos e eventos • requestLayout() - necessário quando uma

    propriedade é modificada que pode alterar o tamanho ou forma do componente
  14. Sendo acessível • Adicionar descrição de conteúdo • Enviar eventos

    de acessibilidade • Suportar diferentes tipos de controladores (d-pad, trackball, etc)