Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Custom View Components
Search
Ana Coimbra
April 24, 2018
Programming
0
23
Custom View Components
Talk for Android Meetup Belo Horizonte - Abril 2018
Ana Coimbra
April 24, 2018
Tweet
Share
More Decks by Ana Coimbra
See All by Ana Coimbra
Realidade Aumentada em dispositivos móveis
anacoimbrag
0
52
Realidade Aumentada & Android
anacoimbrag
0
160
A dive into cors
anacoimbrag
1
160
Como estruturar e manter seguro meus dados no Firebase?
anacoimbrag
0
120
Introdução ao Firebase
anacoimbrag
0
30
Inclusão, engajamento e Colaboração
anacoimbrag
0
26
Design Thinking para Desenvolvedores
anacoimbrag
0
47
Backend as a Service
anacoimbrag
0
34
Material Design Animations
anacoimbrag
0
44
Other Decks in Programming
See All in Programming
R言語の環境構築と基礎 Tokyo.R 112
bob3bob3
0
270
冗長なエラーログを削減し、スタックトレースを手に入れる / Reducing Verbose Error Logs and Obtaining Stack Traces
upamune
0
530
PostmanでAPIの動作確認が楽になった話
h455h1
0
170
Blue/Greenデプロイの導入による 運用フローの改善
kudoas
1
370
Code Reviews
bkuhlmann
4
890
Hanami and htmx
bkuhlmann
0
210
Kotlin Multiplatform at Stable and Beyond (Android Makers 2024)
zsmb
0
120
HUIT新歓2024「競技プログラミング、やってみませんか?」
slephy2784
1
270
Rethinking UI building strategies @ SFI 2024
letelete
0
270
Compose-View Interop in Practice (mDevCamp 2024)
stewemetal
0
130
見た目から始める生産性向上
ikumatadokoro
7
830
Java 22 Overview
kishida
1
180
Featured
See All Featured
Designing on Purpose - Digital PM Summit 2013
jponch
110
6.5k
Bash Introduction
62gerente
604
210k
The MySQL Ecosystem @ GitHub 2015
samlambert
243
12k
Pencils Down: Stop Designing & Start Developing
hursman
117
11k
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3k
Atom: Resistance is Futile
akmur
259
25k
The World Runs on Bad Software
bkeepers
PRO
61
6.7k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
125
32k
Producing Creativity
orderedlist
PRO
337
39k
WebSockets: Embracing the real-time Web
robhawkes
59
7k
How GitHub (no longer) Works
holman
304
140k
What the flash - Photography Introduction
edds
64
11k
Transcript
Custom View Components Android Meetup - Abril 2018
Ana Coimbra #Android | #Web | #IxD #Design | #HeForShe
@anacoimbrag
[email protected]
View
O que é? É a base para qualquer componente de
interface gráfica. São responsáveis por desenhar os componentes e por tratar eventos.
View Widgets ViewGroup TextView Button Spinner LinearLayout FrameLayout RelativeLayout
Desenhando O desenho de uma view é feito percorrendo a
árvore de componentes e gravando qualquer tipo de atualização que deve ser feita
Tratamento de eventos Ao disparar um evento para determinado componente,
ele deve ser tratado e retornado aos listeners.
Porque? Mesmo que dê um certo trabalho, existem vantagens em
criar uma Custom View • Reusabilidade • Encapsulamento • Performance
Como criar? É possível criar custom components de 3 formas
diferentes
Extends View São completamente customizáveis. É necessário pensar em todos
os cálculos de medida e desenho do componente
Extends [ViewGroup] Adicionando um conjunto de widgets é possível criar
um componente que possui um comportamento específico.
Extends [Widget] Dessa forma, é possível aproveitar o comportamento padrão
de determinado widget e fazer customizações mais simples
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
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
Mão na massa!
Criando a sub classe
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
Definindo os estilos
Definindo os estilos • Necessário para controlar os atributos e
comportamentos do componente • Especificar os valores que são aceitáveis para cada atributo
Obtendo os estilos
Obtendo os estilos • Recuperar atributos em tempo real •
Aplicar valores dos atributos ao componente • Não recuperar os valores diretos do AttributeSet
Customizando atributos e eventos
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.
Customizando atributos e eventos • requestLayout() - necessário quando uma
propriedade é modificada que pode alterar o tamanho ou forma do componente
Sendo acessível • Adicionar descrição de conteúdo • Enviar eventos
de acessibilidade • Suportar diferentes tipos de controladores (d-pad, trackball, etc)