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
32
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
59
Realidade Aumentada & Android
anacoimbrag
0
230
A dive into cors
anacoimbrag
1
190
Como estruturar e manter seguro meus dados no Firebase?
anacoimbrag
0
130
Introdução ao Firebase
anacoimbrag
0
37
Inclusão, engajamento e Colaboração
anacoimbrag
0
43
Design Thinking para Desenvolvedores
anacoimbrag
0
58
Backend as a Service
anacoimbrag
0
42
Material Design Animations
anacoimbrag
0
55
Other Decks in Programming
See All in Programming
AI Agent Tool のためのバックエンドアーキテクチャを考える #encraft
izumin5210
6
1.8k
FOSDEM 2026: STUNMESH-go: Building P2P WireGuard Mesh Without Self-Hosted Infrastructure
tjjh89017
0
160
OCaml 5でモダンな並列プログラミングを Enjoyしよう!
haochenx
0
140
Architectural Extensions
denyspoltorak
0
280
16年目のピクシブ百科事典を支える最新の技術基盤 / The Modern Tech Stack Powering Pixiv Encyclopedia in its 16th Year
ahuglajbclajep
5
1k
OSSとなったswift-buildで Xcodeのビルドを差し替えられるため 自分でXcodeを直せる時代になっている ダイアモンド問題編
yimajo
3
610
KIKI_MBSD Cybersecurity Challenges 2025
ikema
0
1.3k
AI によるインシデント初動調査の自動化を行う AI インシデントコマンダーを作った話
azukiazusa1
1
700
「ブロックテーマでは再現できない」は本当か?
inc2734
0
830
Smart Handoff/Pickup ガイド - Claude Code セッション管理
yukiigarashi
0
130
HTTPプロトコル正しく理解していますか? 〜かわいい猫と共に学ぼう。ฅ^•ω•^ฅ ニャ〜
hekuchan
2
680
15年続くIoTサービスのSREエンジニアが挑む分散トレーシング導入
melonps
2
180
Featured
See All Featured
Everyday Curiosity
cassininazir
0
130
Accessibility Awareness
sabderemane
0
49
Designing Powerful Visuals for Engaging Learning
tmiket
0
230
The Cult of Friendly URLs
andyhume
79
6.8k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
77
The Art of Programming - Codeland 2020
erikaheidi
57
14k
YesSQL, Process and Tooling at Scale
rocio
174
15k
A Modern Web Designer's Workflow
chriscoyier
698
190k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
160
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.8k
Being A Developer After 40
akosma
91
590k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
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)