SlideShare a Scribd company logo
1 of 29
Componentes customizados:
Android te dá asas!
1
GUILHERME DE CLEVA FARTO
É DIA DE JAVA 2013
UNIVERSIDADE FEDERAL DE SÃO CARLOS ( UFSCar )
Agenda
 Apresentação
 Introdução
 Estilos customizados
 Componentes compostos/personalizados
 Componentes customizados
2
Apresentação
 Guilherme de Cleva Farto
 Graduação em Ciência da Computação (BCC)
 FEMA 2010
 Pós-graduação em Engenharia de Componentes Java
 FIO/TNT 2011
 Analista/desenvolvedor Java PRX/TOTVS
 Professor de curso de graduação e pós-graduação
 Mestrado aceito na área de Sistemas Colaborativos
 Instituto Tecnológico da Aeronáutica (ITA)
 Autor do projeto “Andruino”
 Aceito no Droidcon ‘13 (Berlim/Alemanha)
 Autor de diversos artigos, treinamentos e palestras
3
In Memoriam
 Rafael Sussel Decleva
  09/03/1982
  21/08/2013
 Filho, pai, marido, professor; amigo...
 “A um homem bom não é possível que ocorra
nenhum mal, nem em vida nem em morte.”
Sócrates
4
Introdução
 O ambiente de desenvolvimento de Google Android fornece
inúmeros componentes da camada de visualização
 Também chamados de View ou ViewGroup
5
Introdução
 Entretanto, nem sempre os objetos View nativos são
“atraentes” e “amigáveis”
 Assim como, dependendo da necessidade, os componentes
existentes podem não atender as reais expectativas
 Para isso, deve-se aplicar os conceitos de engenharia de
componentes e componentização da camada de visualização
6
Introdução
 Por que componentizar?
 Modularizar código-fonte repetitivo
 Acessar métodos protegidos de um componente existente
 Otimizar o desempenho de renderização
 Obter total controle do componente com measure, layout e draw
7
Introdução
 Por que componentizar?
8
Introdução
 Em Google Android, pode-se
 Customizar os estilos e temas de uma aplicação
 Modelar e implementar componentes compostos/personalizados
 Construir componentes customizados
9
Estilos customizados
 A plataforma Android permite a customização de estilos
 Fontes, cores, bordas, alinhamento, espaçamento e outros
 Possibilita a modificação da aparência mas não do
comportamento
 As propriedades de componentes podem ser alteradas por
meio de arquivos XML
 /values/styles.xml
 /values/themes.xml
10
Estilos customizados
 Exemplo de arquivo /values/styles.xml
11
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="buttonStyle" parent="@android:style/Widget.Button">
<item name="android:textSize">15sp</item>
<item name="android:textStyle">bold</item>
<item name="android:textColor">#FFFFFF</item>
<item name="android:gravity">center</item>
<item name="android:shadowColor">#000000</item>
<item name="android:shadowDx">1</item>
<item name="android:shadowDy">1</item>
<item name="android:shadowRadius">0.6</item>
<item name="android:background">@drawable/button_custom</item>
<item name="android:padding">10dip</item>
</style>
</resources>
Estilos customizados
 Exemplo de arquivo /drawable/button_custom.xml
12
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape android:shape="rectangle">
<corners android:radius="3dip" />
<stroke android:width="1dip" android:color="#598e96" />
<gradient android:angle="-90" android:endColor="#7fbac6"
android:startColor="#27646c" />
</shape>
</item>
<item android:state_focused="true">
<shape android:shape="rectangle">
<corners android:radius="3dip" />
<stroke android:width="1dip" android:color="#598e96" />
<solid android:color="#4ea0ab" />
</shape>
</item>
...
Estilos customizados
 Exemplo de arquivo /drawable/button_custom.xml
13
...
<item>
<shape android:shape="rectangle">
<corners android:radius="3dip" />
<stroke android:width="1dip" android:color="#598e96" />
<gradient android:angle="-90" android:endColor="#4ea0ab"
android:startColor="#94dcea" />
</shape>
</item>
</selector>
Estilos customizados
 Aplicando o estilo de um arquivo XML de layout
14
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="20dp" >
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button" />
<Button
android:id="@+id/button2"
style="@style/buttonStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="Button" />
</LinearLayout>
Estilos customizados
 Resultado após a definição do estilo
15
Estilos customizados
 É possível definir o estilo criado como recurso do tema da
aplicação
 Arquivo /values/styles.xml
16
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="AppBaseTheme" parent="android:Theme.Light"></style>
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:buttonStyle">@style/buttonStyle</item>
</style>
<style name="buttonStyle" parent="@android:style/Widget.Button">
<item name="android:textSize">15sp</item>
...
</style>
</resources>
Estilos customizados
 É possível definir o estilo criado como recurso do tema da
aplicação
 Arquivo AndroidManifest.xml
17
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="farto.cleva.guilherme.androidprojeto"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="10" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
...
</application>
</manifest>
Estilos customizados
18
 Implementação de estilos customizados
 styles.xml
 themes.xml
 Componentes
 Button
 SeekBar
 CheckBox
 RatingBar
Estilos customizados
 Páginas importantes
 http://developer.android.com/design/style/writing.html
 http://developer.android.com/guide/topics/resources/style-resource.html
 http://developer.android.com/guide/topics/resources/more-resources.html
19
Componentes compostos/personalizados
 A plataforma Android provê um sofisticado e poderoso
modelo componentizado da camada de UI
 Pode-se, a partir das classes de View existentes, definir um
novo componente para atender a uma necessidade específica
 Vantagens
 Reuso de software
 Manutenibilidade
 Escalabilidade
 Baixa probabilidade de erros/falhas
20
Componentes compostos/personalizados
 A criação de um novo componente requer a implementação
em Java
 Criar um arquivo XML de layout da interface da View
 Criar uma arquivo /values/attrs.xml para definir as propriedades
ou atributos do componente
 Criar uma classe Java para inflar o layout customizado e definir os
comportamentos
21
Componentes compostos/personalizados
22
 Implementação de componente composto/personalizado
 /layout/edittext_validator_view.xml
 /values/attrs.xml
 /anim/
 shake_effect.xml
 cycle_effect.xml
 Classe EditTextValidator.java
 Leitura de atributos
 Uso de expressões regulares
 TextWatcher
 Animation
Estilos customizados
 Páginas importantes
 http://developer.android.com/guide/topics/ui/custom-components.html
 http://developer.android.com/design/index.html
23
Componentes customizados
 Por fim, a plataforma Android torna possível a construção de
novos componentes ou Views customizadas
 A criação de um novo componente engloba toda a
implementação de aparência e funcionalidades
 Requer mais código Java
 Nova classe Java que estende de “android.view.View”
 Não faz uso de arquivos XML de layout
 Deve “desenhar” sua própria interface
24
Componentes customizados
 Principais conceitos
 Measure
 onMeasure(int widthMeasureSpec, int heightMeasureSpec)
 Layout
 onLayout(boolean changed, int left, int right, int top, int bottom)
 Draw
 onDraw(Canvas canvas)
 dispatchDraw(Canvas canvas)
25
Componentes customizados
 Principais conceitos
 Interação (TouchEvent)
 onTouchEvent(MotionEvent event)
 event.getAction()
 MotionEvent.ACTION_DOWN
 MotionEvent.ACTION_MOVE
 MotionEvent.ACTION_UP
 event.getX()
 event.getY()
26
Componentes customizados
27
 Implementação de componente customizado
 ColumnChartView.java
Dúvidas?
28
Guilherme de Cleva Farto
guilherme_computacao@yahoo.com.br
guilherme.farto@gmail.com
@gcleva
Obrigado!
29

More Related Content

What's hot

Introdução à programação para Android
Introdução à programação para AndroidIntrodução à programação para Android
Introdução à programação para AndroidJorge Cardoso
 
Introdução ao Desenvolvimento Android
Introdução ao Desenvolvimento AndroidIntrodução ao Desenvolvimento Android
Introdução ao Desenvolvimento AndroidJosé Alexandre Macedo
 
SESTINFO 2011 Apresentacao Android
SESTINFO 2011 Apresentacao AndroidSESTINFO 2011 Apresentacao Android
SESTINFO 2011 Apresentacao AndroidRafael Sakurai
 
Desenvolvimento móvel com Google Android
Desenvolvimento móvel com Google AndroidDesenvolvimento móvel com Google Android
Desenvolvimento móvel com Google AndroidCaelum
 
Introdução ao android - siecomp 2015.1
Introdução ao android - siecomp 2015.1Introdução ao android - siecomp 2015.1
Introdução ao android - siecomp 2015.1Afonso Machado
 
Curso de Android - aula 3
Curso de Android - aula 3Curso de Android - aula 3
Curso de Android - aula 3Jose Berardo
 
Capítulo 01 - Fundamentos de Android e o HelloWorld
Capítulo 01 - Fundamentos de Android e o HelloWorldCapítulo 01 - Fundamentos de Android e o HelloWorld
Capítulo 01 - Fundamentos de Android e o HelloWorldMarcio Palheta
 
Desenvolvimento Android, por onde começar?
Desenvolvimento Android, por onde começar?Desenvolvimento Android, por onde começar?
Desenvolvimento Android, por onde começar?Rudson Lima
 
Programação Android - Básico
Programação Android - BásicoProgramação Android - Básico
Programação Android - BásicoHugoDalevedove
 
Introdução ao desenvolvimento de apps para Android - Dia 1/2
Introdução ao desenvolvimento de apps para Android - Dia 1/2Introdução ao desenvolvimento de apps para Android - Dia 1/2
Introdução ao desenvolvimento de apps para Android - Dia 1/2Matheus Calegaro
 
Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fer...
Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fer...Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fer...
Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fer...Tchelinux
 
Entenda porque seu aplicativo de Android não deve ser igual ao de iPhone
Entenda porque seu aplicativo de Android não deve ser igual ao de iPhoneEntenda porque seu aplicativo de Android não deve ser igual ao de iPhone
Entenda porque seu aplicativo de Android não deve ser igual ao de iPhoneHenrique Perticarati
 
Curso de Android Aula 4
Curso de Android Aula 4Curso de Android Aula 4
Curso de Android Aula 4Jose Berardo
 

What's hot (20)

Introdução à programação para Android
Introdução à programação para AndroidIntrodução à programação para Android
Introdução à programação para Android
 
Introdução ao Desenvolvimento Android
Introdução ao Desenvolvimento AndroidIntrodução ao Desenvolvimento Android
Introdução ao Desenvolvimento Android
 
SESTINFO 2011 Apresentacao Android
SESTINFO 2011 Apresentacao AndroidSESTINFO 2011 Apresentacao Android
SESTINFO 2011 Apresentacao Android
 
Android Studio
Android StudioAndroid Studio
Android Studio
 
Desenvolvimento móvel com Google Android
Desenvolvimento móvel com Google AndroidDesenvolvimento móvel com Google Android
Desenvolvimento móvel com Google Android
 
Introdução ao android - siecomp 2015.1
Introdução ao android - siecomp 2015.1Introdução ao android - siecomp 2015.1
Introdução ao android - siecomp 2015.1
 
Curso de Android - aula 3
Curso de Android - aula 3Curso de Android - aula 3
Curso de Android - aula 3
 
Android Aula 3
Android Aula 3Android Aula 3
Android Aula 3
 
Android Aula 5
Android Aula 5Android Aula 5
Android Aula 5
 
Capítulo 01 - Fundamentos de Android e o HelloWorld
Capítulo 01 - Fundamentos de Android e o HelloWorldCapítulo 01 - Fundamentos de Android e o HelloWorld
Capítulo 01 - Fundamentos de Android e o HelloWorld
 
Google android pdf
Google android pdfGoogle android pdf
Google android pdf
 
Android Aula 4
Android Aula 4Android Aula 4
Android Aula 4
 
Desenvolvimento Android, por onde começar?
Desenvolvimento Android, por onde começar?Desenvolvimento Android, por onde começar?
Desenvolvimento Android, por onde começar?
 
Programação Android - Básico
Programação Android - BásicoProgramação Android - Básico
Programação Android - Básico
 
Android Aula 2
Android Aula 2Android Aula 2
Android Aula 2
 
Introdução ao desenvolvimento de apps para Android - Dia 1/2
Introdução ao desenvolvimento de apps para Android - Dia 1/2Introdução ao desenvolvimento de apps para Android - Dia 1/2
Introdução ao desenvolvimento de apps para Android - Dia 1/2
 
Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fer...
Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fer...Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fer...
Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fer...
 
Entenda porque seu aplicativo de Android não deve ser igual ao de iPhone
Entenda porque seu aplicativo de Android não deve ser igual ao de iPhoneEntenda porque seu aplicativo de Android não deve ser igual ao de iPhone
Entenda porque seu aplicativo de Android não deve ser igual ao de iPhone
 
Curso de Android Aula 4
Curso de Android Aula 4Curso de Android Aula 4
Curso de Android Aula 4
 
Apresentação android
Apresentação androidApresentação android
Apresentação android
 

Similar to Componentes customizados: Android te dá asas!

Desenvolvimento de Aplicações com Visual Studio
Desenvolvimento de Aplicações com Visual StudioDesenvolvimento de Aplicações com Visual Studio
Desenvolvimento de Aplicações com Visual StudioGeovani Ferreira Gonçalves
 
Framework Entities na CBSoft
Framework Entities na CBSoftFramework Entities na CBSoft
Framework Entities na CBSoftMarcius Brandão
 
Computação Móvel 2012.2 - Android
Computação Móvel 2012.2 - AndroidComputação Móvel 2012.2 - Android
Computação Móvel 2012.2 - AndroidTiago Bencardino
 
Apresentação Facelets_UNIFEI
Apresentação Facelets_UNIFEIApresentação Facelets_UNIFEI
Apresentação Facelets_UNIFEIFelipe Knappe
 
Aula 1 -_ambiente_visual_studio_2012
Aula 1 -_ambiente_visual_studio_2012Aula 1 -_ambiente_visual_studio_2012
Aula 1 -_ambiente_visual_studio_2012Laís Vidal
 
4º FastShow - WPF Windows Presentation Foundation Overview
4º FastShow - WPF Windows Presentation Foundation Overview4º FastShow - WPF Windows Presentation Foundation Overview
4º FastShow - WPF Windows Presentation Foundation Overviewqualidatavix
 
JSF2 ScrumToys SestInfo 2010
JSF2 ScrumToys SestInfo 2010JSF2 ScrumToys SestInfo 2010
JSF2 ScrumToys SestInfo 2010Eder Magalhães
 
Silverlight 4 e Expression Blend 4
Silverlight 4 e Expression Blend 4Silverlight 4 e Expression Blend 4
Silverlight 4 e Expression Blend 4Rodrigo Kono
 
Como criar interfaces gráficas com android
Como criar interfaces gráficas com androidComo criar interfaces gráficas com android
Como criar interfaces gráficas com androidRicardo Ogliari
 
Utilizando o Padrão Presentation Model em Aplicações Flex
Utilizando o Padrão Presentation Model em Aplicações FlexUtilizando o Padrão Presentation Model em Aplicações Flex
Utilizando o Padrão Presentation Model em Aplicações FlexEric Cavalcanti
 
Entendendo a Tríade Model-View-Controller (MVC) utilizando padrões de projeto...
Entendendo a Tríade Model-View-Controller (MVC) utilizando padrões de projeto...Entendendo a Tríade Model-View-Controller (MVC) utilizando padrões de projeto...
Entendendo a Tríade Model-View-Controller (MVC) utilizando padrões de projeto...Lucas Furtado de Oliveira
 

Similar to Componentes customizados: Android te dá asas! (20)

JavaServer Faces
JavaServer FacesJavaServer Faces
JavaServer Faces
 
Desenvolvimento de Aplicações com Visual Studio
Desenvolvimento de Aplicações com Visual StudioDesenvolvimento de Aplicações com Visual Studio
Desenvolvimento de Aplicações com Visual Studio
 
Androi studio
Androi studioAndroi studio
Androi studio
 
Framework Entities na CBSoft
Framework Entities na CBSoftFramework Entities na CBSoft
Framework Entities na CBSoft
 
Computação Móvel 2012.2 - Android
Computação Móvel 2012.2 - AndroidComputação Móvel 2012.2 - Android
Computação Móvel 2012.2 - Android
 
Apresentação Facelets_UNIFEI
Apresentação Facelets_UNIFEIApresentação Facelets_UNIFEI
Apresentação Facelets_UNIFEI
 
Aula 1 -_ambiente_visual_studio_2012
Aula 1 -_ambiente_visual_studio_2012Aula 1 -_ambiente_visual_studio_2012
Aula 1 -_ambiente_visual_studio_2012
 
4º FastShow - WPF Windows Presentation Foundation Overview
4º FastShow - WPF Windows Presentation Foundation Overview4º FastShow - WPF Windows Presentation Foundation Overview
4º FastShow - WPF Windows Presentation Foundation Overview
 
Android - Conceito e Arquitetura
Android - Conceito e ArquiteturaAndroid - Conceito e Arquitetura
Android - Conceito e Arquitetura
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
 
JSF2 ScrumToys SestInfo 2010
JSF2 ScrumToys SestInfo 2010JSF2 ScrumToys SestInfo 2010
JSF2 ScrumToys SestInfo 2010
 
Curso Básico Android - Aula 01
Curso Básico Android - Aula 01Curso Básico Android - Aula 01
Curso Básico Android - Aula 01
 
Silverlight 4 e Expression Blend 4
Silverlight 4 e Expression Blend 4Silverlight 4 e Expression Blend 4
Silverlight 4 e Expression Blend 4
 
Como criar interfaces gráficas com android
Como criar interfaces gráficas com androidComo criar interfaces gráficas com android
Como criar interfaces gráficas com android
 
Utilizando o Padrão Presentation Model em Aplicações Flex
Utilizando o Padrão Presentation Model em Aplicações FlexUtilizando o Padrão Presentation Model em Aplicações Flex
Utilizando o Padrão Presentation Model em Aplicações Flex
 
Entendendo a Tríade Model-View-Controller (MVC) utilizando padrões de projeto...
Entendendo a Tríade Model-View-Controller (MVC) utilizando padrões de projeto...Entendendo a Tríade Model-View-Controller (MVC) utilizando padrões de projeto...
Entendendo a Tríade Model-View-Controller (MVC) utilizando padrões de projeto...
 
Framework 7 pdf
Framework 7 pdfFramework 7 pdf
Framework 7 pdf
 
Titanium
TitaniumTitanium
Titanium
 
Angular 2
Angular 2Angular 2
Angular 2
 
Frameworks em Java
Frameworks em JavaFrameworks em Java
Frameworks em Java
 

Recently uploaded

Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de LedAula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de LedJaquelineBertagliaCe
 
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...andreiavys
 
Apresentação | Símbolos e Valores da União Europeia
Apresentação | Símbolos e Valores da União EuropeiaApresentação | Símbolos e Valores da União Europeia
Apresentação | Símbolos e Valores da União EuropeiaCentro Jacques Delors
 
Caderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdfCaderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdfJuliana Barbosa
 
Sistema de Bibliotecas UCS - Cantos do fim do século
Sistema de Bibliotecas UCS  - Cantos do fim do séculoSistema de Bibliotecas UCS  - Cantos do fim do século
Sistema de Bibliotecas UCS - Cantos do fim do séculoBiblioteca UCS
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...PatriciaCaetano18
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024azulassessoria9
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...azulassessoria9
 
Aula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .pptAula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .pptNathaliaFreitas32
 
tensoes-etnicas-na-europa-template-1.pptx
tensoes-etnicas-na-europa-template-1.pptxtensoes-etnicas-na-europa-template-1.pptx
tensoes-etnicas-na-europa-template-1.pptxgia0123
 
aprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubelaprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubeladrianaguedesbatista
 
M0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptxM0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptxJustinoTeixeira1
 
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Centro Jacques Delors
 
Slide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticaSlide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticash5kpmr7w7
 
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdfRepública Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdfLidianeLill2
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxMarcosLemes28
 
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxMonoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxFlviaGomes64
 
Aprender as diferentes formas de classificar as habilidades motoras é de extr...
Aprender as diferentes formas de classificar as habilidades motoras é de extr...Aprender as diferentes formas de classificar as habilidades motoras é de extr...
Aprender as diferentes formas de classificar as habilidades motoras é de extr...azulassessoria9
 
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...marcelafinkler
 

Recently uploaded (20)

Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de LedAula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
 
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
 
Apresentação | Símbolos e Valores da União Europeia
Apresentação | Símbolos e Valores da União EuropeiaApresentação | Símbolos e Valores da União Europeia
Apresentação | Símbolos e Valores da União Europeia
 
Caderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdfCaderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdf
 
Sistema de Bibliotecas UCS - Cantos do fim do século
Sistema de Bibliotecas UCS  - Cantos do fim do séculoSistema de Bibliotecas UCS  - Cantos do fim do século
Sistema de Bibliotecas UCS - Cantos do fim do século
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
 
Aula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .pptAula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .ppt
 
Novena de Pentecostes com textos de São João Eudes
Novena de Pentecostes com textos de São João EudesNovena de Pentecostes com textos de São João Eudes
Novena de Pentecostes com textos de São João Eudes
 
tensoes-etnicas-na-europa-template-1.pptx
tensoes-etnicas-na-europa-template-1.pptxtensoes-etnicas-na-europa-template-1.pptx
tensoes-etnicas-na-europa-template-1.pptx
 
aprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubelaprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubel
 
M0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptxM0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptx
 
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
 
Slide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticaSlide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemática
 
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdfRepública Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptx
 
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxMonoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
 
Aprender as diferentes formas de classificar as habilidades motoras é de extr...
Aprender as diferentes formas de classificar as habilidades motoras é de extr...Aprender as diferentes formas de classificar as habilidades motoras é de extr...
Aprender as diferentes formas de classificar as habilidades motoras é de extr...
 
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
 

Componentes customizados: Android te dá asas!

  • 1. Componentes customizados: Android te dá asas! 1 GUILHERME DE CLEVA FARTO É DIA DE JAVA 2013 UNIVERSIDADE FEDERAL DE SÃO CARLOS ( UFSCar )
  • 2. Agenda  Apresentação  Introdução  Estilos customizados  Componentes compostos/personalizados  Componentes customizados 2
  • 3. Apresentação  Guilherme de Cleva Farto  Graduação em Ciência da Computação (BCC)  FEMA 2010  Pós-graduação em Engenharia de Componentes Java  FIO/TNT 2011  Analista/desenvolvedor Java PRX/TOTVS  Professor de curso de graduação e pós-graduação  Mestrado aceito na área de Sistemas Colaborativos  Instituto Tecnológico da Aeronáutica (ITA)  Autor do projeto “Andruino”  Aceito no Droidcon ‘13 (Berlim/Alemanha)  Autor de diversos artigos, treinamentos e palestras 3
  • 4. In Memoriam  Rafael Sussel Decleva   09/03/1982   21/08/2013  Filho, pai, marido, professor; amigo...  “A um homem bom não é possível que ocorra nenhum mal, nem em vida nem em morte.” Sócrates 4
  • 5. Introdução  O ambiente de desenvolvimento de Google Android fornece inúmeros componentes da camada de visualização  Também chamados de View ou ViewGroup 5
  • 6. Introdução  Entretanto, nem sempre os objetos View nativos são “atraentes” e “amigáveis”  Assim como, dependendo da necessidade, os componentes existentes podem não atender as reais expectativas  Para isso, deve-se aplicar os conceitos de engenharia de componentes e componentização da camada de visualização 6
  • 7. Introdução  Por que componentizar?  Modularizar código-fonte repetitivo  Acessar métodos protegidos de um componente existente  Otimizar o desempenho de renderização  Obter total controle do componente com measure, layout e draw 7
  • 8. Introdução  Por que componentizar? 8
  • 9. Introdução  Em Google Android, pode-se  Customizar os estilos e temas de uma aplicação  Modelar e implementar componentes compostos/personalizados  Construir componentes customizados 9
  • 10. Estilos customizados  A plataforma Android permite a customização de estilos  Fontes, cores, bordas, alinhamento, espaçamento e outros  Possibilita a modificação da aparência mas não do comportamento  As propriedades de componentes podem ser alteradas por meio de arquivos XML  /values/styles.xml  /values/themes.xml 10
  • 11. Estilos customizados  Exemplo de arquivo /values/styles.xml 11 <resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="buttonStyle" parent="@android:style/Widget.Button"> <item name="android:textSize">15sp</item> <item name="android:textStyle">bold</item> <item name="android:textColor">#FFFFFF</item> <item name="android:gravity">center</item> <item name="android:shadowColor">#000000</item> <item name="android:shadowDx">1</item> <item name="android:shadowDy">1</item> <item name="android:shadowRadius">0.6</item> <item name="android:background">@drawable/button_custom</item> <item name="android:padding">10dip</item> </style> </resources>
  • 12. Estilos customizados  Exemplo de arquivo /drawable/button_custom.xml 12 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true"> <shape android:shape="rectangle"> <corners android:radius="3dip" /> <stroke android:width="1dip" android:color="#598e96" /> <gradient android:angle="-90" android:endColor="#7fbac6" android:startColor="#27646c" /> </shape> </item> <item android:state_focused="true"> <shape android:shape="rectangle"> <corners android:radius="3dip" /> <stroke android:width="1dip" android:color="#598e96" /> <solid android:color="#4ea0ab" /> </shape> </item> ...
  • 13. Estilos customizados  Exemplo de arquivo /drawable/button_custom.xml 13 ... <item> <shape android:shape="rectangle"> <corners android:radius="3dip" /> <stroke android:width="1dip" android:color="#598e96" /> <gradient android:angle="-90" android:endColor="#4ea0ab" android:startColor="#94dcea" /> </shape> </item> </selector>
  • 14. Estilos customizados  Aplicando o estilo de um arquivo XML de layout 14 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="20dp" > <Button android:id="@+id/button1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Button" /> <Button android:id="@+id/button2" style="@style/buttonStyle" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:text="Button" /> </LinearLayout>
  • 15. Estilos customizados  Resultado após a definição do estilo 15
  • 16. Estilos customizados  É possível definir o estilo criado como recurso do tema da aplicação  Arquivo /values/styles.xml 16 <resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="AppBaseTheme" parent="android:Theme.Light"></style> <style name="AppTheme" parent="AppBaseTheme"> <item name="android:buttonStyle">@style/buttonStyle</item> </style> <style name="buttonStyle" parent="@android:style/Widget.Button"> <item name="android:textSize">15sp</item> ... </style> </resources>
  • 17. Estilos customizados  É possível definir o estilo criado como recurso do tema da aplicação  Arquivo AndroidManifest.xml 17 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="farto.cleva.guilherme.androidprojeto" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="10" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > ... </application> </manifest>
  • 18. Estilos customizados 18  Implementação de estilos customizados  styles.xml  themes.xml  Componentes  Button  SeekBar  CheckBox  RatingBar
  • 19. Estilos customizados  Páginas importantes  http://developer.android.com/design/style/writing.html  http://developer.android.com/guide/topics/resources/style-resource.html  http://developer.android.com/guide/topics/resources/more-resources.html 19
  • 20. Componentes compostos/personalizados  A plataforma Android provê um sofisticado e poderoso modelo componentizado da camada de UI  Pode-se, a partir das classes de View existentes, definir um novo componente para atender a uma necessidade específica  Vantagens  Reuso de software  Manutenibilidade  Escalabilidade  Baixa probabilidade de erros/falhas 20
  • 21. Componentes compostos/personalizados  A criação de um novo componente requer a implementação em Java  Criar um arquivo XML de layout da interface da View  Criar uma arquivo /values/attrs.xml para definir as propriedades ou atributos do componente  Criar uma classe Java para inflar o layout customizado e definir os comportamentos 21
  • 22. Componentes compostos/personalizados 22  Implementação de componente composto/personalizado  /layout/edittext_validator_view.xml  /values/attrs.xml  /anim/  shake_effect.xml  cycle_effect.xml  Classe EditTextValidator.java  Leitura de atributos  Uso de expressões regulares  TextWatcher  Animation
  • 23. Estilos customizados  Páginas importantes  http://developer.android.com/guide/topics/ui/custom-components.html  http://developer.android.com/design/index.html 23
  • 24. Componentes customizados  Por fim, a plataforma Android torna possível a construção de novos componentes ou Views customizadas  A criação de um novo componente engloba toda a implementação de aparência e funcionalidades  Requer mais código Java  Nova classe Java que estende de “android.view.View”  Não faz uso de arquivos XML de layout  Deve “desenhar” sua própria interface 24
  • 25. Componentes customizados  Principais conceitos  Measure  onMeasure(int widthMeasureSpec, int heightMeasureSpec)  Layout  onLayout(boolean changed, int left, int right, int top, int bottom)  Draw  onDraw(Canvas canvas)  dispatchDraw(Canvas canvas) 25
  • 26. Componentes customizados  Principais conceitos  Interação (TouchEvent)  onTouchEvent(MotionEvent event)  event.getAction()  MotionEvent.ACTION_DOWN  MotionEvent.ACTION_MOVE  MotionEvent.ACTION_UP  event.getX()  event.getY() 26
  • 27. Componentes customizados 27  Implementação de componente customizado  ColumnChartView.java
  • 29. Guilherme de Cleva Farto guilherme_computacao@yahoo.com.br guilherme.farto@gmail.com @gcleva Obrigado! 29