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

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

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!

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
 

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

NOVA ORDEM MUNDIAL - Conceitos básicos na NOM
NOVA ORDEM MUNDIAL - Conceitos básicos na NOMNOVA ORDEM MUNDIAL - Conceitos básicos na NOM
NOVA ORDEM MUNDIAL - Conceitos básicos na NOMHenrique Pontes
 
PARC 2024 Cadastro de estudante, turma e enturmação - BAHIA (2).pdf
PARC 2024 Cadastro de estudante, turma e enturmação - BAHIA (2).pdfPARC 2024 Cadastro de estudante, turma e enturmação - BAHIA (2).pdf
PARC 2024 Cadastro de estudante, turma e enturmação - BAHIA (2).pdfceajajacu
 
atividades diversas 1° ano alfabetização
atividades diversas 1° ano alfabetizaçãoatividades diversas 1° ano alfabetização
atividades diversas 1° ano alfabetizaçãodanielagracia9
 
VACINAR E DOAR, É SÓ COMEÇAR - - 1º BIMESTRE
VACINAR E DOAR, É SÓ COMEÇAR - - 1º BIMESTREVACINAR E DOAR, É SÓ COMEÇAR - - 1º BIMESTRE
VACINAR E DOAR, É SÓ COMEÇAR - - 1º BIMESTREIVONETETAVARESRAMOS
 
Mini livro sanfona - Povos Indigenas Brasileiros
Mini livro sanfona  - Povos Indigenas BrasileirosMini livro sanfona  - Povos Indigenas Brasileiros
Mini livro sanfona - Povos Indigenas BrasileirosMary Alvarenga
 
A Unidade de Espiritualidade Eudista se une ao sentimiento de toda a igreja u...
A Unidade de Espiritualidade Eudista se une ao sentimiento de toda a igreja u...A Unidade de Espiritualidade Eudista se une ao sentimiento de toda a igreja u...
A Unidade de Espiritualidade Eudista se une ao sentimiento de toda a igreja u...Unidad de Espiritualidad Eudista
 
Slides Lição 01, Central Gospel, Os Sinais do Fim dos Tempos 2Tr24.pptx
Slides Lição 01, Central Gospel, Os Sinais do Fim dos Tempos 2Tr24.pptxSlides Lição 01, Central Gospel, Os Sinais do Fim dos Tempos 2Tr24.pptx
Slides Lição 01, Central Gospel, Os Sinais do Fim dos Tempos 2Tr24.pptxLuizHenriquedeAlmeid6
 
EVANGELISMO É MISSÕES ATUALIZADO 2024.pptx
EVANGELISMO É MISSÕES ATUALIZADO 2024.pptxEVANGELISMO É MISSÕES ATUALIZADO 2024.pptx
EVANGELISMO É MISSÕES ATUALIZADO 2024.pptxHenriqueLuciano2
 
Apresentação sobre o Combate a Dengue 2024
Apresentação sobre o Combate a Dengue 2024Apresentação sobre o Combate a Dengue 2024
Apresentação sobre o Combate a Dengue 2024GleyceMoreiraXWeslle
 
Baladão sobre Variação Linguistica para o spaece.pptx
Baladão sobre Variação Linguistica para o spaece.pptxBaladão sobre Variação Linguistica para o spaece.pptx
Baladão sobre Variação Linguistica para o spaece.pptxacaciocarmo1
 
CAMINHOS PARA A PROMOÇÃO DA INLUSÃO E VIDA INDEPENDENTE
CAMINHOS PARA  A PROMOÇÃO DA INLUSÃO E VIDA INDEPENDENTECAMINHOS PARA  A PROMOÇÃO DA INLUSÃO E VIDA INDEPENDENTE
CAMINHOS PARA A PROMOÇÃO DA INLUSÃO E VIDA INDEPENDENTEJoaquim Colôa
 
Jogo de Revisão Terceira Série (Primeiro Trimestre)
Jogo de Revisão Terceira Série (Primeiro Trimestre)Jogo de Revisão Terceira Série (Primeiro Trimestre)
Jogo de Revisão Terceira Série (Primeiro Trimestre)Paula Meyer Piagentini
 
v19n2s3a25.pdfgcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
v19n2s3a25.pdfgcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbv19n2s3a25.pdfgcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
v19n2s3a25.pdfgcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbyasminlarissa371
 
A Inteligência Artificial na Educação e a Inclusão Linguística
A Inteligência Artificial na Educação e a Inclusão LinguísticaA Inteligência Artificial na Educação e a Inclusão Linguística
A Inteligência Artificial na Educação e a Inclusão LinguísticaFernanda Ledesma
 
Simulado com textos curtos e tirinhas spaece
Simulado com textos curtos e tirinhas spaeceSimulado com textos curtos e tirinhas spaece
Simulado com textos curtos e tirinhas spaeceRonisHolanda
 
Sistema de Bibliotecas UCS - A descoberta da terra
Sistema de Bibliotecas UCS  - A descoberta da terraSistema de Bibliotecas UCS  - A descoberta da terra
Sistema de Bibliotecas UCS - A descoberta da terraBiblioteca UCS
 
POETAS CONTEMPORANEOS_TEMATICAS_explicacao.pptx
POETAS CONTEMPORANEOS_TEMATICAS_explicacao.pptxPOETAS CONTEMPORANEOS_TEMATICAS_explicacao.pptx
POETAS CONTEMPORANEOS_TEMATICAS_explicacao.pptxJMTCS
 
Modernidade perspectiva sobre a África e América
Modernidade perspectiva sobre a África e AméricaModernidade perspectiva sobre a África e América
Modernidade perspectiva sobre a África e Américawilson778875
 
Com base no excerto acima, escreva um texto explicando como a estrutura socia...
Com base no excerto acima, escreva um texto explicando como a estrutura socia...Com base no excerto acima, escreva um texto explicando como a estrutura socia...
Com base no excerto acima, escreva um texto explicando como a estrutura socia...azulassessoria9
 
UM CURSO DE INFORMATICA BASICA PARA IDOSOS
UM CURSO DE INFORMATICA BASICA PARA IDOSOSUM CURSO DE INFORMATICA BASICA PARA IDOSOS
UM CURSO DE INFORMATICA BASICA PARA IDOSOSdjgsantos1981
 

Último (20)

NOVA ORDEM MUNDIAL - Conceitos básicos na NOM
NOVA ORDEM MUNDIAL - Conceitos básicos na NOMNOVA ORDEM MUNDIAL - Conceitos básicos na NOM
NOVA ORDEM MUNDIAL - Conceitos básicos na NOM
 
PARC 2024 Cadastro de estudante, turma e enturmação - BAHIA (2).pdf
PARC 2024 Cadastro de estudante, turma e enturmação - BAHIA (2).pdfPARC 2024 Cadastro de estudante, turma e enturmação - BAHIA (2).pdf
PARC 2024 Cadastro de estudante, turma e enturmação - BAHIA (2).pdf
 
atividades diversas 1° ano alfabetização
atividades diversas 1° ano alfabetizaçãoatividades diversas 1° ano alfabetização
atividades diversas 1° ano alfabetização
 
VACINAR E DOAR, É SÓ COMEÇAR - - 1º BIMESTRE
VACINAR E DOAR, É SÓ COMEÇAR - - 1º BIMESTREVACINAR E DOAR, É SÓ COMEÇAR - - 1º BIMESTRE
VACINAR E DOAR, É SÓ COMEÇAR - - 1º BIMESTRE
 
Mini livro sanfona - Povos Indigenas Brasileiros
Mini livro sanfona  - Povos Indigenas BrasileirosMini livro sanfona  - Povos Indigenas Brasileiros
Mini livro sanfona - Povos Indigenas Brasileiros
 
A Unidade de Espiritualidade Eudista se une ao sentimiento de toda a igreja u...
A Unidade de Espiritualidade Eudista se une ao sentimiento de toda a igreja u...A Unidade de Espiritualidade Eudista se une ao sentimiento de toda a igreja u...
A Unidade de Espiritualidade Eudista se une ao sentimiento de toda a igreja u...
 
Slides Lição 01, Central Gospel, Os Sinais do Fim dos Tempos 2Tr24.pptx
Slides Lição 01, Central Gospel, Os Sinais do Fim dos Tempos 2Tr24.pptxSlides Lição 01, Central Gospel, Os Sinais do Fim dos Tempos 2Tr24.pptx
Slides Lição 01, Central Gospel, Os Sinais do Fim dos Tempos 2Tr24.pptx
 
EVANGELISMO É MISSÕES ATUALIZADO 2024.pptx
EVANGELISMO É MISSÕES ATUALIZADO 2024.pptxEVANGELISMO É MISSÕES ATUALIZADO 2024.pptx
EVANGELISMO É MISSÕES ATUALIZADO 2024.pptx
 
Apresentação sobre o Combate a Dengue 2024
Apresentação sobre o Combate a Dengue 2024Apresentação sobre o Combate a Dengue 2024
Apresentação sobre o Combate a Dengue 2024
 
Baladão sobre Variação Linguistica para o spaece.pptx
Baladão sobre Variação Linguistica para o spaece.pptxBaladão sobre Variação Linguistica para o spaece.pptx
Baladão sobre Variação Linguistica para o spaece.pptx
 
CAMINHOS PARA A PROMOÇÃO DA INLUSÃO E VIDA INDEPENDENTE
CAMINHOS PARA  A PROMOÇÃO DA INLUSÃO E VIDA INDEPENDENTECAMINHOS PARA  A PROMOÇÃO DA INLUSÃO E VIDA INDEPENDENTE
CAMINHOS PARA A PROMOÇÃO DA INLUSÃO E VIDA INDEPENDENTE
 
Jogo de Revisão Terceira Série (Primeiro Trimestre)
Jogo de Revisão Terceira Série (Primeiro Trimestre)Jogo de Revisão Terceira Série (Primeiro Trimestre)
Jogo de Revisão Terceira Série (Primeiro Trimestre)
 
v19n2s3a25.pdfgcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
v19n2s3a25.pdfgcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbv19n2s3a25.pdfgcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
v19n2s3a25.pdfgcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
 
A Inteligência Artificial na Educação e a Inclusão Linguística
A Inteligência Artificial na Educação e a Inclusão LinguísticaA Inteligência Artificial na Educação e a Inclusão Linguística
A Inteligência Artificial na Educação e a Inclusão Linguística
 
Simulado com textos curtos e tirinhas spaece
Simulado com textos curtos e tirinhas spaeceSimulado com textos curtos e tirinhas spaece
Simulado com textos curtos e tirinhas spaece
 
Sistema de Bibliotecas UCS - A descoberta da terra
Sistema de Bibliotecas UCS  - A descoberta da terraSistema de Bibliotecas UCS  - A descoberta da terra
Sistema de Bibliotecas UCS - A descoberta da terra
 
POETAS CONTEMPORANEOS_TEMATICAS_explicacao.pptx
POETAS CONTEMPORANEOS_TEMATICAS_explicacao.pptxPOETAS CONTEMPORANEOS_TEMATICAS_explicacao.pptx
POETAS CONTEMPORANEOS_TEMATICAS_explicacao.pptx
 
Modernidade perspectiva sobre a África e América
Modernidade perspectiva sobre a África e AméricaModernidade perspectiva sobre a África e América
Modernidade perspectiva sobre a África e América
 
Com base no excerto acima, escreva um texto explicando como a estrutura socia...
Com base no excerto acima, escreva um texto explicando como a estrutura socia...Com base no excerto acima, escreva um texto explicando como a estrutura socia...
Com base no excerto acima, escreva um texto explicando como a estrutura socia...
 
UM CURSO DE INFORMATICA BASICA PARA IDOSOS
UM CURSO DE INFORMATICA BASICA PARA IDOSOSUM CURSO DE INFORMATICA BASICA PARA IDOSOS
UM CURSO DE INFORMATICA BASICA PARA IDOSOS
 

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