Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Custom View Components
Search
Ana Coimbra
April 24, 2018
Programming
40
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
66
Realidade Aumentada & Android
anacoimbrag
0
250
A dive into cors
anacoimbrag
1
200
Como estruturar e manter seguro meus dados no Firebase?
anacoimbrag
0
140
Introdução ao Firebase
anacoimbrag
0
45
Inclusão, engajamento e Colaboração
anacoimbrag
0
48
Design Thinking para Desenvolvedores
anacoimbrag
0
64
Backend as a Service
anacoimbrag
0
53
Material Design Animations
anacoimbrag
0
67
Other Decks in Programming
See All in Programming
ALB ログから Trace を気合で繋げる技術
fohte
7
890
数年滞っていたダークモード対応をおよそ2週間で完了させる
chigichan24
0
700
【高い買い物LT会】初任給で話題の国産フィジカルAIを買った話
akagami
PRO
0
150
信頼性の目標を誰も求めてない
shubox
0
510
テストを司るデーモンに会いに行く 〜隔離した仮想マシンでテストを通すまで〜
h1d3mun3
1
210
デプロイ直後のレイテンシスパイクを調べたら、 Railsの仕様にたどり着いた
nhsykym
0
120
世界の中心で、AI(App Intents)をさけぶ ー App Intents中心設計の実践ガイド
touyou
0
450
App Intentsのビルドプロセスを支える技術
kntkymt
0
310
AI × TiDD / 2026.09.05 Redmine 大阪
tokudiro
1
130
The Good Stuff, Not the Slop: Engineering High-Quality Android Apps with Modern AI Tooling
danybony
1
240
技術的負債を組織課題として解く-増えすぎたマイクロサービスとの戦い-
reimaru
1
530
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
300
Featured
See All Featured
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
270
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
65k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Code Reviewing Like a Champion
maltzj
528
40k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Color Theory Basics | Prateek | Gurzu
gurzu
0
460
Faster Mobile Websites
deanohume
310
32k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
820
Agile that works and the tools we love
rasmusluckow
331
22k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
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)