SlideShare uma empresa Scribd logo
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

Mais conteúdo relacionado

Mais procurados

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 Android
José Alexandre Macedo
 
SESTINFO 2011 Apresentacao Android
SESTINFO 2011 Apresentacao AndroidSESTINFO 2011 Apresentacao Android
SESTINFO 2011 Apresentacao Android
Rafael Sakurai
 
Android Studio
Android StudioAndroid Studio
Android Studio
Juarez Junior
 
Desenvolvimento móvel com Google Android
Desenvolvimento móvel com Google AndroidDesenvolvimento móvel com Google Android
Desenvolvimento móvel com Google Android
Caelum
 
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
Afonso Machado
 
Curso de Android - aula 3
Curso de Android - aula 3Curso de Android - aula 3
Curso de Android - aula 3
Jose Berardo
 
Android Aula 3
Android Aula 3Android Aula 3
Android Aula 3
Erisvaldo Junior
 
Android Aula 5
Android Aula 5Android Aula 5
Android Aula 5
Erisvaldo Junior
 
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
Marcio Palheta
 
Google android pdf
Google android pdfGoogle android pdf
Google android pdf
Leonardo Rossetto
 
Android Aula 4
Android Aula 4Android Aula 4
Android Aula 4
Erisvaldo Junior
 
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ásico
HugoDalevedove
 
Android Aula 2
Android Aula 2Android Aula 2
Android Aula 2
Erisvaldo Junior
 
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
Matheus 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 iPhone
Henrique Perticarati
 
Curso de Android Aula 4
Curso de Android Aula 4Curso de Android Aula 4
Curso de Android Aula 4
Jose Berardo
 
Apresentação android
Apresentação androidApresentação android
Apresentação android
Leandro Rodrigues
 

Mais procurados (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
 

Semelhante a Componentes customizados: Android te dá asas!

JavaServer Faces
JavaServer FacesJavaServer Faces
JavaServer Faces
armeniocardoso
 
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
Geovani Ferreira Gonçalves
 
Androi studio
Androi studioAndroi studio
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 - Android
Tiago Bencardino
 
Apresentação Facelets_UNIFEI
Apresentação Facelets_UNIFEIApresentação Facelets_UNIFEI
Apresentação Facelets_UNIFEI
Felipe Knappe
 
Aula 1 -_ambiente_visual_studio_2012
Aula 1 -_ambiente_visual_studio_2012Aula 1 -_ambiente_visual_studio_2012
Aula 1 -_ambiente_visual_studio_2012
Laí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 Overview
qualidatavix
 
Android - Conceito e Arquitetura
Android - Conceito e ArquiteturaAndroid - Conceito e Arquitetura
Android - Conceito e Arquitetura
Ana Dolores Lima Dias
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
jornaljava
 
JSF2 ScrumToys SestInfo 2010
JSF2 ScrumToys SestInfo 2010JSF2 ScrumToys SestInfo 2010
JSF2 ScrumToys SestInfo 2010Eder Magalhães
 
Curso Básico Android - Aula 01
Curso Básico Android - Aula 01Curso Básico Android - Aula 01
Curso Básico Android - Aula 01
Lucas Boeing Scarduelli
 
Silverlight 4 e Expression Blend 4
Silverlight 4 e Expression Blend 4Silverlight 4 e Expression Blend 4
Silverlight 4 e Expression Blend 4
Rodrigo 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 android
Ricardo 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
 
Framework 7 pdf
Framework 7 pdfFramework 7 pdf
Framework 7 pdf
dam01pucminas
 
Titanium
TitaniumTitanium
Angular 2
Angular 2Angular 2
Angular 2
Benicio Ávila
 
Frameworks em Java
Frameworks em JavaFrameworks em Java
Frameworks em Java
Luis Fernando Pimenta
 

Semelhante a 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
 

Último

the_story_garden_5_SB_with_activities.pdf
the_story_garden_5_SB_with_activities.pdfthe_story_garden_5_SB_with_activities.pdf
the_story_garden_5_SB_with_activities.pdf
CarinaSoto12
 
Acróstico - Reciclar é preciso
Acróstico   -  Reciclar é preciso Acróstico   -  Reciclar é preciso
Acróstico - Reciclar é preciso
Mary Alvarenga
 
PROVA FINAL Filosofia e Educação Cristã.ppt
PROVA FINAL Filosofia e Educação Cristã.pptPROVA FINAL Filosofia e Educação Cristã.ppt
PROVA FINAL Filosofia e Educação Cristã.ppt
betokg
 
Memorial do convento slides- português 2023
Memorial do convento slides- português 2023Memorial do convento slides- português 2023
Memorial do convento slides- português 2023
MatildeBrites
 
Sinais de pontuação
Sinais de pontuaçãoSinais de pontuação
Sinais de pontuação
Mary Alvarenga
 
Arundhati Roy - O Deus das Pequenas Coisas - ÍNDIA.pdf
Arundhati Roy - O Deus das Pequenas Coisas - ÍNDIA.pdfArundhati Roy - O Deus das Pequenas Coisas - ÍNDIA.pdf
Arundhati Roy - O Deus das Pequenas Coisas - ÍNDIA.pdf
Ana Da Silva Ponce
 
.Template .padrao .slides .TCC .2024 ppt
.Template .padrao .slides .TCC .2024 ppt.Template .padrao .slides .TCC .2024 ppt
.Template .padrao .slides .TCC .2024 ppt
IslanderAndrade
 
Atividade - Letra da música "Tem Que Sorrir" - Jorge e Mateus
Atividade - Letra da música "Tem Que Sorrir"  - Jorge e MateusAtividade - Letra da música "Tem Que Sorrir"  - Jorge e Mateus
Atividade - Letra da música "Tem Que Sorrir" - Jorge e Mateus
Mary Alvarenga
 
LIÇÃO 9 - ORDENANÇAS PARA UMA VIDA DE SANTIFICAÇÃO.pptx
LIÇÃO 9 - ORDENANÇAS PARA UMA VIDA DE SANTIFICAÇÃO.pptxLIÇÃO 9 - ORDENANÇAS PARA UMA VIDA DE SANTIFICAÇÃO.pptx
LIÇÃO 9 - ORDENANÇAS PARA UMA VIDA DE SANTIFICAÇÃO.pptx
WelidaFreitas1
 
EJA -livro para professor -dos anos iniciais letramento e alfabetização.pdf
EJA -livro para professor -dos anos iniciais letramento e alfabetização.pdfEJA -livro para professor -dos anos iniciais letramento e alfabetização.pdf
EJA -livro para professor -dos anos iniciais letramento e alfabetização.pdf
Escola Municipal Jesus Cristo
 
Aula 3- 6º HIS - As origens da humanidade, seus deslocamentos e os processos ...
Aula 3- 6º HIS - As origens da humanidade, seus deslocamentos e os processos ...Aula 3- 6º HIS - As origens da humanidade, seus deslocamentos e os processos ...
Aula 3- 6º HIS - As origens da humanidade, seus deslocamentos e os processos ...
Luana Neres
 
INGLÊS COMO LÍNGUA FRANCA - IMPORTÂNCIA.pptx
INGLÊS COMO LÍNGUA FRANCA - IMPORTÂNCIA.pptxINGLÊS COMO LÍNGUA FRANCA - IMPORTÂNCIA.pptx
INGLÊS COMO LÍNGUA FRANCA - IMPORTÂNCIA.pptx
AndreasCarvalho2
 
Slides Lição 10, CPAD, Desenvolvendo uma Consciência de Santidade, 2Tr24.pptx
Slides Lição 10, CPAD, Desenvolvendo uma Consciência de Santidade, 2Tr24.pptxSlides Lição 10, CPAD, Desenvolvendo uma Consciência de Santidade, 2Tr24.pptx
Slides Lição 10, CPAD, Desenvolvendo uma Consciência de Santidade, 2Tr24.pptx
LuizHenriquedeAlmeid6
 
o que está acontecendo no Rio grande do Sul
o que está acontecendo no Rio grande do Sulo que está acontecendo no Rio grande do Sul
o que está acontecendo no Rio grande do Sul
CarlaInsStaub
 
repertório coringa para qualquer tema - Redação Enem
repertório coringa para qualquer tema - Redação Enemrepertório coringa para qualquer tema - Redação Enem
repertório coringa para qualquer tema - Redação Enem
palomasampaio878
 
Aula 2 - 6º HIS - Formas de registro da história e da produção do conheciment...
Aula 2 - 6º HIS - Formas de registro da história e da produção do conheciment...Aula 2 - 6º HIS - Formas de registro da história e da produção do conheciment...
Aula 2 - 6º HIS - Formas de registro da história e da produção do conheciment...
Luana Neres
 
BULLYING NÃO É AMOR.pdf LIVRO PARA TRABALHAR COM ALUNOS ATRAVÉS DE PROJETOS...
BULLYING NÃO É AMOR.pdf LIVRO PARA TRABALHAR COM ALUNOS ATRAVÉS DE PROJETOS...BULLYING NÃO É AMOR.pdf LIVRO PARA TRABALHAR COM ALUNOS ATRAVÉS DE PROJETOS...
BULLYING NÃO É AMOR.pdf LIVRO PARA TRABALHAR COM ALUNOS ATRAVÉS DE PROJETOS...
Escola Municipal Jesus Cristo
 
Sequência Didática - Cordel para Ensino Fundamental I
Sequência Didática - Cordel para Ensino Fundamental ISequência Didática - Cordel para Ensino Fundamental I
Sequência Didática - Cordel para Ensino Fundamental I
Letras Mágicas
 
MÁRTIRES DE UGANDA Convertem-se ao Cristianismo - 1885-1887.pptx
MÁRTIRES DE UGANDA Convertem-se ao Cristianismo - 1885-1887.pptxMÁRTIRES DE UGANDA Convertem-se ao Cristianismo - 1885-1887.pptx
MÁRTIRES DE UGANDA Convertem-se ao Cristianismo - 1885-1887.pptx
Martin M Flynn
 
HISTÓRIA DO CEARÁ MOVIMENTOS REVOLUCIONARIOS NO CEARÁ.pptx
HISTÓRIA DO CEARÁ MOVIMENTOS REVOLUCIONARIOS NO CEARÁ.pptxHISTÓRIA DO CEARÁ MOVIMENTOS REVOLUCIONARIOS NO CEARÁ.pptx
HISTÓRIA DO CEARÁ MOVIMENTOS REVOLUCIONARIOS NO CEARÁ.pptx
WALTERDECARVALHOBRAG
 

Último (20)

the_story_garden_5_SB_with_activities.pdf
the_story_garden_5_SB_with_activities.pdfthe_story_garden_5_SB_with_activities.pdf
the_story_garden_5_SB_with_activities.pdf
 
Acróstico - Reciclar é preciso
Acróstico   -  Reciclar é preciso Acróstico   -  Reciclar é preciso
Acróstico - Reciclar é preciso
 
PROVA FINAL Filosofia e Educação Cristã.ppt
PROVA FINAL Filosofia e Educação Cristã.pptPROVA FINAL Filosofia e Educação Cristã.ppt
PROVA FINAL Filosofia e Educação Cristã.ppt
 
Memorial do convento slides- português 2023
Memorial do convento slides- português 2023Memorial do convento slides- português 2023
Memorial do convento slides- português 2023
 
Sinais de pontuação
Sinais de pontuaçãoSinais de pontuação
Sinais de pontuação
 
Arundhati Roy - O Deus das Pequenas Coisas - ÍNDIA.pdf
Arundhati Roy - O Deus das Pequenas Coisas - ÍNDIA.pdfArundhati Roy - O Deus das Pequenas Coisas - ÍNDIA.pdf
Arundhati Roy - O Deus das Pequenas Coisas - ÍNDIA.pdf
 
.Template .padrao .slides .TCC .2024 ppt
.Template .padrao .slides .TCC .2024 ppt.Template .padrao .slides .TCC .2024 ppt
.Template .padrao .slides .TCC .2024 ppt
 
Atividade - Letra da música "Tem Que Sorrir" - Jorge e Mateus
Atividade - Letra da música "Tem Que Sorrir"  - Jorge e MateusAtividade - Letra da música "Tem Que Sorrir"  - Jorge e Mateus
Atividade - Letra da música "Tem Que Sorrir" - Jorge e Mateus
 
LIÇÃO 9 - ORDENANÇAS PARA UMA VIDA DE SANTIFICAÇÃO.pptx
LIÇÃO 9 - ORDENANÇAS PARA UMA VIDA DE SANTIFICAÇÃO.pptxLIÇÃO 9 - ORDENANÇAS PARA UMA VIDA DE SANTIFICAÇÃO.pptx
LIÇÃO 9 - ORDENANÇAS PARA UMA VIDA DE SANTIFICAÇÃO.pptx
 
EJA -livro para professor -dos anos iniciais letramento e alfabetização.pdf
EJA -livro para professor -dos anos iniciais letramento e alfabetização.pdfEJA -livro para professor -dos anos iniciais letramento e alfabetização.pdf
EJA -livro para professor -dos anos iniciais letramento e alfabetização.pdf
 
Aula 3- 6º HIS - As origens da humanidade, seus deslocamentos e os processos ...
Aula 3- 6º HIS - As origens da humanidade, seus deslocamentos e os processos ...Aula 3- 6º HIS - As origens da humanidade, seus deslocamentos e os processos ...
Aula 3- 6º HIS - As origens da humanidade, seus deslocamentos e os processos ...
 
INGLÊS COMO LÍNGUA FRANCA - IMPORTÂNCIA.pptx
INGLÊS COMO LÍNGUA FRANCA - IMPORTÂNCIA.pptxINGLÊS COMO LÍNGUA FRANCA - IMPORTÂNCIA.pptx
INGLÊS COMO LÍNGUA FRANCA - IMPORTÂNCIA.pptx
 
Slides Lição 10, CPAD, Desenvolvendo uma Consciência de Santidade, 2Tr24.pptx
Slides Lição 10, CPAD, Desenvolvendo uma Consciência de Santidade, 2Tr24.pptxSlides Lição 10, CPAD, Desenvolvendo uma Consciência de Santidade, 2Tr24.pptx
Slides Lição 10, CPAD, Desenvolvendo uma Consciência de Santidade, 2Tr24.pptx
 
o que está acontecendo no Rio grande do Sul
o que está acontecendo no Rio grande do Sulo que está acontecendo no Rio grande do Sul
o que está acontecendo no Rio grande do Sul
 
repertório coringa para qualquer tema - Redação Enem
repertório coringa para qualquer tema - Redação Enemrepertório coringa para qualquer tema - Redação Enem
repertório coringa para qualquer tema - Redação Enem
 
Aula 2 - 6º HIS - Formas de registro da história e da produção do conheciment...
Aula 2 - 6º HIS - Formas de registro da história e da produção do conheciment...Aula 2 - 6º HIS - Formas de registro da história e da produção do conheciment...
Aula 2 - 6º HIS - Formas de registro da história e da produção do conheciment...
 
BULLYING NÃO É AMOR.pdf LIVRO PARA TRABALHAR COM ALUNOS ATRAVÉS DE PROJETOS...
BULLYING NÃO É AMOR.pdf LIVRO PARA TRABALHAR COM ALUNOS ATRAVÉS DE PROJETOS...BULLYING NÃO É AMOR.pdf LIVRO PARA TRABALHAR COM ALUNOS ATRAVÉS DE PROJETOS...
BULLYING NÃO É AMOR.pdf LIVRO PARA TRABALHAR COM ALUNOS ATRAVÉS DE PROJETOS...
 
Sequência Didática - Cordel para Ensino Fundamental I
Sequência Didática - Cordel para Ensino Fundamental ISequência Didática - Cordel para Ensino Fundamental I
Sequência Didática - Cordel para Ensino Fundamental I
 
MÁRTIRES DE UGANDA Convertem-se ao Cristianismo - 1885-1887.pptx
MÁRTIRES DE UGANDA Convertem-se ao Cristianismo - 1885-1887.pptxMÁRTIRES DE UGANDA Convertem-se ao Cristianismo - 1885-1887.pptx
MÁRTIRES DE UGANDA Convertem-se ao Cristianismo - 1885-1887.pptx
 
HISTÓRIA DO CEARÁ MOVIMENTOS REVOLUCIONARIOS NO CEARÁ.pptx
HISTÓRIA DO CEARÁ MOVIMENTOS REVOLUCIONARIOS NO CEARÁ.pptxHISTÓRIA DO CEARÁ MOVIMENTOS REVOLUCIONARIOS NO CEARÁ.pptx
HISTÓRIA DO CEARÁ MOVIMENTOS REVOLUCIONARIOS NO CEARÁ.pptx
 

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