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
35
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Custom View Components
Talk for Android Meetup Belo Horizonte - Abril 2018
Ana Coimbra
April 24, 2018
More Decks by Ana Coimbra
See All by Ana Coimbra
Realidade Aumentada em dispositivos móveis
anacoimbrag
0
64
Realidade Aumentada & Android
anacoimbrag
0
250
A dive into cors
anacoimbrag
1
200
Como estruturar e manter seguro meus dados no Firebase?
anacoimbrag
0
130
Introdução ao Firebase
anacoimbrag
0
42
Inclusão, engajamento e Colaboração
anacoimbrag
0
45
Design Thinking para Desenvolvedores
anacoimbrag
0
61
Backend as a Service
anacoimbrag
0
48
Material Design Animations
anacoimbrag
0
64
Other Decks in Programming
See All in Programming
20260722_microCMSで考える、AI時代のコンテンツ運用設計
yosh1
0
190
Laravel Boostに学ぶ、AIにPHPを書かせる技術 〜OSSの実装から蒸留するエージェント制御の王道〜
kentaroutakeda
3
620
【やさしく解説 設計編・中級 #6】良いアーキテクチャとは ~ 一本の登り道の、行き先 ~
panda728
PRO
0
200
AI Engineeringは、AIプロダクトだけのものか? 〜AIがソフトウェアを作る時代の新しい当たり前〜 / No AI in your product. AI Engineering in your development.
rkaga
4
310
Foundation Models frameworkで画像分析
ryodeveloper
1
250
AI時代のPHPer生存戦略 ~「言語、もうなんでもよくない?」に本気で向き合う~
vivion
0
210
ルールを書いて終わらせないハーネスエンジニアリング
yug1224
4
1.8k
【やさしく解説 設計編・中級 #1】一つの車に、運転手は一人 ~ある倉庫システムの事例から~
panda728
PRO
0
200
JAWS-UG横浜 #102 AWSサ終供養LT会 成仏できない AWS サービスたち 〜本日、三体供養します〜
maroon1st
0
290
『コードを書く以外の』エンジニアリング〜課金基盤移行プロジェクト推進のためのTips4選
yuriko1211
0
560
What's New in Android 2026
veronikapj
0
240
Google Apps Script で Ruby を動かす
kawahara
0
120
Featured
See All Featured
Bash Introduction
62gerente
615
220k
A Soul's Torment
seathinner
6
3.1k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.2k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
440
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.4k
Become a Pro
speakerdeck
PRO
31
6k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
Designing for Performance
lara
611
70k
Skip the Path - Find Your Career Trail
mkilby
1
170
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4k
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)