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
26
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
55
Realidade Aumentada & Android
anacoimbrag
0
210
A dive into cors
anacoimbrag
1
190
Como estruturar e manter seguro meus dados no Firebase?
anacoimbrag
0
120
Introdução ao Firebase
anacoimbrag
0
32
Inclusão, engajamento e Colaboração
anacoimbrag
0
38
Design Thinking para Desenvolvedores
anacoimbrag
0
52
Backend as a Service
anacoimbrag
0
38
Material Design Animations
anacoimbrag
0
52
Other Decks in Programming
See All in Programming
レベル1の開発生産性向上に取り組む − 日々の作業の効率化・自動化を通じた改善活動
kesoji
0
220
Code as Context 〜 1にコードで 2にリンタ 34がなくて 5にルール? 〜
yodakeisuke
0
130
イベントストーミング図からコードへの変換手順 / Procedure for Converting Event Storming Diagrams to Code
nrslib
2
820
Modern Angular with Signals and Signal Store:New Rules for Your Architecture @enterJS Advanced Angular Day 2025
manfredsteyer
PRO
0
220
#QiitaBash MCPのセキュリティ
ryosukedtomita
1
1.3k
GitHub Copilot and GitHub Codespaces Hands-on
ymd65536
2
150
AIプログラマーDevinは PHPerの夢を見るか?
shinyasaita
1
220
Hypervel - A Coroutine Framework for Laravel Artisans
albertcht
1
130
初学者でも今すぐできる、Claude Codeの生産性を10倍上げるTips
s4yuba
16
11k
おやつのお供はお決まりですか?@WWDC25 Recap -Japan-\(region).swift
shingangan
0
140
すべてのコンテキストを、 ユーザー価値に変える
applism118
3
1.3k
テストから始めるAgentic Coding 〜Claude Codeと共に行うTDD〜 / Agentic Coding starts with testing
rkaga
12
4.5k
Featured
See All Featured
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.4k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.7k
Site-Speed That Sticks
csswizardry
10
690
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.6k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
510
Reflections from 52 weeks, 52 projects
jeffersonlam
351
20k
BBQ
matthewcrist
89
9.7k
Gamification - CAS2011
davidbonilla
81
5.4k
Art, The Web, and Tiny UX
lynnandtonic
299
21k
Optimising Largest Contentful Paint
csswizardry
37
3.3k
The World Runs on Bad Software
bkeepers
PRO
69
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)