SlideShare ist ein Scribd-Unternehmen logo
1 von 45
Minicurso Básico de Android – 2º Dia
Thales Levi Azevedo Valente
Apresentação
• Thales Levi Azevedo Valente
– selaht7@gmail.com
– Bacharel em Ciência da Computação – UFMA
– Pesquisador em:
• Processamento de Imagens
• Android
– Lattes:
• http://lattes.cnpq.br/1509490497932923
(28/05 - 03/07)/2015 2Thales Levi Azevedo Valente - UFMA
O trabalho Minicurso de Android Básico I (este trabalho), bem como suas outras partes
(referente também aos dias 2, 3 e 4), de Thales Levi Azevedo Valente está licenciado com
uma Licença Creative Commons - Atribuição-NãoComercial-SemDerivações 4.0
Internacional. Para ver uma cópia desta licença, visite
http://creativecommons.org/licenses/by-nc-nd/4.0/.
• Você é livre para:
– Copiar, distribuir o material
• Sobre as seguintes condições:
– Atribuição de créditos: você deve fazer referência ao autor
– Não-comercial: você não deve usar este material para propósitos comerciais
– Não-Derivados: Se você criar trabalhos derivados deste, você não deve distribuí-lo.
Termos de uso deste material
(28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 3
Roteiro 2º Dia
• Gerenciadores de
Layout
• AbsoluteLayout
• LinearLayout
• RelativeLayout
• TableLayout
• ScrollView
• Widgets – Componentes de
Interface
• Views
• TextView
• EditText
• ImageView
• ScaleTypes
• Button
• CheckBox
• RadioGroup
• Spinner
• ArrayAdapter
(28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 4
Widgets – Componentes de Interface
• Unidade básica de componentes de interface com o usuário no
Android (superclasse dos widgets)
• Ocupa uma área retangular na tela
• Responsável por elaboração e captura de eventos relacionados a si
mesmo
• Permitem instância em XML ou Java. São exemplos de subclasses:
Views
(28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 6
 TextView
 EditText
 ImageView
 Button
 CheckBox
 Spinner
 RadioGroup
 RadioButton
• Permite exibir textos estáticos na tela
• Por padrão, não permite edição de texto
• Alguns atributos:
– text : define o texto que seria exibido no componente.
– textStyle : define o estilo do texto. As opções possíveis são negrito, itálico e normal.
– fontFamily : especifica a família da fonte do texto.
– typeFace : define o tipo de letra para o texto. Os valores possíveis são normal, sans, serif e
espaçamento fixo.
– textSize : define o tamanho do texto. Recomenda-se a utilização sp para o tamanho.
– textColor : define a cor do texto. Definida em hexadecimal ou como uma referência a outro recurso.
– background : define a cor de fundo do texto. Definido da mesma forma descrito anteriormente.
– lines : define a altura exata do TextView em linhas.
– clickable : indica se a exibição reage a eventos click.
– autoLink : identifica os links no texto e os converte em clicáveis (web, email, telefone).
TextView
(28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 7
TextView
(28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 8
TextViews instanciados em Java
TextViews instanciado em XML
O primeiro TextView foi gerado em XML e
os seguintes gerados dinâmicamente
• Como boa prática, você deve utilizar o recurso strings.xml ao invés de colocar o
texto diretamente num TextView.
• Isso se aplica a qualquer outro componente de interface que tem região
textual. Ex:
Regiões Textuais e o recurso Strings.xml
Quando o texto é inserido diretamente na região textual, é sugerido a você
usar o recurso Strings.xml. Mas, se você optar por não seguir a sugestão, seu
código funcionará sem problemas.
(28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 9
Regiões Textuais e o recurso Strings.xml
Localização, no projeto, do recurso
strings.xml
Exemplo de como adicionar uma string no arquivo string.xml
formato: <string name= “frase identificadora”> frase que aparecerá na região textual </string>
Exemplo de como utilizar um recurso de string. Compare com o
slide anterior
(28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 10
• Permite que o usuário insira valores por meio de teclado físico ou
virtual.
• Alguns atributos:
– Hint: texto explicativo que diz o que deve ser inserido no componente
– Text: texto simples
– inputType
• textCapCharacter: texto com todas as letras em maiúsculo
• textEMailAddress: usado para campos de e-mail
• textPassword: usado para campos de senha
• Number: permite apenas números (sem sinais)
• numberSigned: permite apenas números (com sinais)
• Phone: usado para digitação de números de telefone
EditText
(28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 11
• No slide 37 tem exemplos de como definir em XML. Este caso
especificamente refere-se ao EditText de e-mail. Para se obter o que
foi digitado pelo usuário, em código, faça:
EditText
(28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 12
1- recupero o objeto pelo seu ID (o ID é opcional e definido em XML)
2- Pego o texto e converto para String
• Componente que permite exibir imagens
• As imagens podem ser carregadas a partir de:
– Arquivos da galeria de imagens
– Internet
– Da pasta de recursos do aplicativo
– algum tratamento de imagens (edição, processamento, etc)
• Oferece diversas opções de exibição (escala, recorte, etc)
ImageView
(28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 13
• Como usar em XML:
– src: seta a imagem no ImageView.
ImageView
(28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 14
• Como usar em Java:
ImageView
(28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 15
Escale o quanto for necessário em X e/ou Y.
Tem prioridade sobre adjustViewBounds, por
isso não preservou a razão de aspecto
• Como usar em Java:
ImageView
(28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 16
Compare com o slide anterior e comprove ;)
• ScaleTypes e seus resultados
ImageView
(28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 17
Com adjustViewBounds Com os ScaleTypes
• É um componente de interface que consiste em um texto ou ícone
(ou ambos), que comunica qual ação ocorre quando o usuário o toca.
– Para ícone pode-se utilizar ImageButton
Button
ÍconeTexto Texto e Ícone
(28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 18
• Quando o usuário “clica” em um botão, tal botão recebe um evento
de click. Este evento pode ser manipulado de duas maneiras
1. XML:
A. adicione o atributo android:onClick no elemento <Button> e dê um nome ao
método que irá tratar o evento.
B. Crie o método dentro da Activity em que aquele botão está instanciado.
• Deve ser público
• Deve retornar void
• Deve conter como parâmetro uma única View.
Button
(28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 19
2. Usando onClickListener
A. Instancie o botão em tempo de execução ou recupere o botão definido no XML
pelo seu ID.
B. Adicione um onClickListener para o botão.
Button
Obs: mais de um botão pode chamar o mesmo
método que trata o click. Neste caso, você pode
verificar o ID da View antes de tomar alguma
ação.
(28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 20
• Permite ao usuário selecionar uma ou mais opções de um determinado
conjunto.
• Tem que ser verificado quais caixas estão ativadas e/ou desativadas.
CheckBox
Exemplo de CheckBox
(28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 21
CheckBox
Instanciando em XML
Criando uma variável e recuperando o checkbox pelo ID em código
Ao usuário solicitar o total, se o checkBox do lápis estiver verificado, realizo a ação correspondente (no
caso, estou recuperando a quantidade de lápis indicada pelo usuário no campo EditText, multiplicando
pelo preço do lápis e somando ao total – variável resultado)
(28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 22
• Classe usada para agrupar um conjunto de Radio Buttons de tal
forma que não seja permitida múltiplas escolhas.
• Em outras palavras, dentro de um Radio Group, a escolha de um
Radio Button anula a escolha de outro
• Use este componente apenas se você quer mostrar as opções lado a
lado. Senão, considere utilizar Spinner (discutido mais à frente) para
economizar espaço na tela.
• Muito útil para fazer enquetes.
RadioGroup
(28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 23
RadioGroup
Exemplo de utilização de RadioGroup e RadioButtons
(28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 24
RadioGroup
Exemplo anterior definido em XML.
Obs: Não esqueça que em
uma aplicação, como boa
prática, você não deve
colocar o texto diretamente
em um componente textual
e utilizar o recurso
string.xml
(28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 25
RadioGroup
Dando ação ao nosso exemplo
(28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 26
• Provê uma rápida seleção de um elemento dentro de um conjunto
• Por padrão, um spinner mostra apenas o elemento selecionado e
sempre o primeiro elemento é o selecionado incialmente.
• Ao ser tocado, mostra uma lista com os elementos do conjunto, no
qual o usuário seleciona um dos elementos.
Spinner
Exemplo de seleção utilizando Spinner
(28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 27
Spinner
XML
Código
(28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 28
• No geral, adaptadores são classes que fazem ligação entre coleções
de objetos e componentes de interface com o usuário.
• Em seu construtor, informamos 3 parâmetros
1. A Activity em que será instanciada
2. Um recurso de layout (utilizaremos um contido no SDK)
3. Uma coleção de objetos
• Depois de criado, setamos no componente que irá utilizá-lo. No
caso do slide anterior, no Spinner.
ArrayAdapter
Obs: Para acessar recursos já predefinidos presentes no SDK, utilizamos a
classe android.R
(28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 29
• Por último, adicionamos um onItemSelectedListener e
implementamos o método onItemSelected que nos dá acesso:
– ao ArrayAdapter em que a seleção aconteceu
– à View selecionada
– à posição, no adaptador, da View selecionada
– à posição, na linha, do item selecionado.
Spinner
(28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 30
Gerenciadores de Layouts
• São elementos que definem como os elementos de interface estarão
organizados na tela ou em porção dela
• Cada um se comporta de um forma específica
• Pode-se aninhar um gerenciador com outro (A contém B)
• Alguns exemplos de gerenciadores:
– AbsoluteLayout
– FrameLayout
– LinearLayout
– RelativeLayout
– TableLayout
– ScrollView
Gerenciadores de Layouts
(28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 32
• Trata a tela como um plano cartesiano
• Posiciona os componentes fornecendo coordenadas x e y.
• Os valores de x crescem da esquerda para direita, e de y de cima
para baixo
• A posição padrão dos objetos é (0,0) – canto superior esquerdo
• Caiu em desuso por devido à sua baixa flexibilidade – é melhor dar
posições relativas do que absolutas, pois há diversos tamanhos de
telas e resoluções e a tela pode mudar a sua horientação
(horizontal/vertical).
AbsoluteLayout
(28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 33
AbsoluteLayout
(x1,y1)
(0,0)
(x5,y5)
(x3,y3)(x4,y4)
(x2,y2)
Exemplo gráfico do uso do AbsoluteLayout
(28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 34
AbsoluteLayout
Situação B - 3,7” 480 x 800 hdpi
Situação A - 4,7” 720 x 1280 xhdpi
Um exemplo de problema utilizando
AbsoluteLayout. Uma posição (x,y)
numa tela maior pode não existir em
uma tela menor
(28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 35
• Um dos gerenciadores e layout
mais utilizados.
• Permite organizar os
componentes de interface de
forma linear.
• Lembra uma organização de
elementos em um vetor.
– Vertical: cada ítem é adicionado
abaixo de seu antecessor
– Horizontal: cada ítem é adicionado
do lado direito de seu antecessor
LinearLayout
View View View View
View
View
View
Horizontal
Vertical
(28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 36
• Posiciona um
componente filho em
relação ao layout pai
ou a outros
componentes filhos
RelativeLayout
(28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 37
• Organiza os componentes através de linhas e colunas (uma tabela).
• Cada linha é uma table row
• As colunas são definidas automaticamente na medida que
adicionamos os componentes em uma table row.
• Cada table row pode ter mais de um componente e cada um será
organizado de forma a parecer que é uma coluna, porém não
aparecerá nenhuma linha informando que é uma coluna
TableLayout
(28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 38
• Primeira TableRow – TextView
• Segunda TableRow – TextView e EditText
• Terceira TableRow – ...
TableLayout
(28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 39
• É um gerenciador com barra de rolagem que permite que
componentes de interface sejam visualizados mesmo que o espaço
ocupado por estes sejam maior que a tela do dispositivo
• Permite apenas um componente filho. Geralmente utiliza-se o
LinearLayout com orientação vertical e constrói-se uma hierarquia
complexa tendo este último como pai.
• Obs: para rolagem horizontal, utilize HorizontalScrollView
(Fazendo um trocadilho, o ScrollView é um avô que quis quer ter apenas um filho! HaHaHa)
ScrollView
(28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 40
ScrollView
Widget
Widget
Widget
Vertical
Widget
Widget
Widget
ScrollView
LinearLayout (ou outro elemento)
Região visível na tela
Região não visível (necessário rolagem)
(28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 41
(28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 42
Dúvidas ?
(28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 43
Até a próxima !
(28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 44
• As imagens utilizadas foram adquiridas, em maior parte, através de
screenshots da tela do computador do próprio autor deste material.
• As imagens especificadas abaixo foram adquiridas através da ferramenta de
pesquisa de imagens da google https://images.google.com/. Todos os créditos
referente a elas são dados aos locais selecionados através de tal ferramenta. Se
você é autor e deseja que as imagens sejam removidas, entre em contato e
será feito.
http://www.appschopper.com/blog/wp-content/uploads/2013/03/Be-the-Pro-with-Best-Books-for-Android-Application-Development-
Banner.jpg
http://radixsmartclass.in/radixtemp/wp-content/uploads/2013/03/android_on_android_classroom_control.jpg
http://vamsystems.com/Images/ContentImages/2015/1/android-banner.jpg
http://3.bp.blogspot.com/-sRZob5WYyes/UzU7MkCOR0I/AAAAAAAACx4/sAlM8OIRrnQ/s1600/android-app-banner.png
http://hd.wallpaperswide.com/thumbs/android_green_background-t2.jpg
http://4.bp.blogspot.com/-OOXne6FICPk/VSGOCJtMm2I/AAAAAAAAABQ/ScOC2wFsnJU/s1600/android.png
http://www.androidcentral.com/sites/androidcentral.com/files/postimages/108579/bugdroid-salute-cropped.png
Referências
(28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 45
• LECHETA, R. R. (2010). Google Android. 2a edição, São Paulo, Novatec.
• LECHETA, R. R. (2012). Google Android Para Tablets - Aprenda a Desenvolver Aplicações
Para o Android de Smartphones a Tablets. 2ª edição, São Paulo, Novatec.
• ANDROID DEVELOPERS. Disponível em:
<http://developer.android.com/develop/index.html.>. Acesso em: junho de 2015.
Referências

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (11)

Cap05
Cap05Cap05
Cap05
 
Revisão de C# 4.0
Revisão de C# 4.0Revisão de C# 4.0
Revisão de C# 4.0
 
Simulink -oliveira
Simulink  -oliveiraSimulink  -oliveira
Simulink -oliveira
 
Excel VBA: Aula 11
Excel VBA: Aula 11Excel VBA: Aula 11
Excel VBA: Aula 11
 
Strategy - Padrões de Projeto
Strategy - Padrões de ProjetoStrategy - Padrões de Projeto
Strategy - Padrões de Projeto
 
03 - Introdução a lógica de programação parte 3 - v1.1
03 - Introdução a lógica de programação parte 3 - v1.103 - Introdução a lógica de programação parte 3 - v1.1
03 - Introdução a lógica de programação parte 3 - v1.1
 
Algoritmos - Formas de Representação de Algoritmos
Algoritmos - Formas de Representação de AlgoritmosAlgoritmos - Formas de Representação de Algoritmos
Algoritmos - Formas de Representação de Algoritmos
 
Aula 03 - UML e Padrões de Projeto
Aula 03 - UML e Padrões de ProjetoAula 03 - UML e Padrões de Projeto
Aula 03 - UML e Padrões de Projeto
 
Algoritmos - Pseudocódigo
Algoritmos - PseudocódigoAlgoritmos - Pseudocódigo
Algoritmos - Pseudocódigo
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Java1
Java1Java1
Java1
 

Andere mochten auch

Curso de android
Curso de androidCurso de android
Curso de androidflaviokreis
 
Curso Android Slide 5 Deploy - Wellington Pinto de Oliveira
Curso Android Slide 5 Deploy - Wellington Pinto de OliveiraCurso Android Slide 5 Deploy - Wellington Pinto de Oliveira
Curso Android Slide 5 Deploy - Wellington Pinto de OliveiraWellington Oliveira
 
Webinar: Usando o InduSoft Web Studio para Criar Gráficos HTML5 IHM/SCADA
Webinar: Usando o InduSoft Web Studio para Criar Gráficos HTML5 IHM/SCADAWebinar: Usando o InduSoft Web Studio para Criar Gráficos HTML5 IHM/SCADA
Webinar: Usando o InduSoft Web Studio para Criar Gráficos HTML5 IHM/SCADAAVEVA
 
Redes de Computadores Capítulo 6 - Camada de Transporte
Redes de Computadores Capítulo 6 - Camada de TransporteRedes de Computadores Capítulo 6 - Camada de Transporte
Redes de Computadores Capítulo 6 - Camada de TransporteWellington Oliveira
 
Curso Android Slide 2 Introdução Plataforma - Wellington PInto de Oliveira
Curso Android Slide 2 Introdução Plataforma - Wellington PInto de OliveiraCurso Android Slide 2 Introdução Plataforma - Wellington PInto de Oliveira
Curso Android Slide 2 Introdução Plataforma - Wellington PInto de OliveiraWellington Oliveira
 
Construindo sua primeira aplicação android
Construindo sua primeira aplicação androidConstruindo sua primeira aplicação android
Construindo sua primeira aplicação android666Insanity
 
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
 
Desenvolvendo para Android
Desenvolvendo para AndroidDesenvolvendo para Android
Desenvolvendo para AndroidClaudio Pereira
 
Desenvolvendo Aplicativos com Android
Desenvolvendo Aplicativos com AndroidDesenvolvendo Aplicativos com Android
Desenvolvendo Aplicativos com AndroidMayron Cachina
 
Instalação de Aplicativos Linux
Instalação de Aplicativos LinuxInstalação de Aplicativos Linux
Instalação de Aplicativos LinuxWellington Oliveira
 
Android 02 - Recycler View Adapter
Android 02 - Recycler View AdapterAndroid 02 - Recycler View Adapter
Android 02 - Recycler View AdapterAline Borges
 
Desenvolvimento de Aplicativos para a Plataforma Android
Desenvolvimento de Aplicativos para a Plataforma AndroidDesenvolvimento de Aplicativos para a Plataforma Android
Desenvolvimento de Aplicativos para a Plataforma AndroidJosé Alexandre Macedo
 
Curso Android 01: Introdução
Curso Android 01: IntroduçãoCurso Android 01: Introdução
Curso Android 01: IntroduçãoAline Borges
 
Desenvolvimento de aplicações para a plataforma google android
Desenvolvimento de aplicações para a plataforma google androidDesenvolvimento de aplicações para a plataforma google android
Desenvolvimento de aplicações para a plataforma google androidLucas Aquiles
 
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
 
Desenvolvendo Aplicações Android com Qt
Desenvolvendo Aplicações Android com QtDesenvolvendo Aplicações Android com Qt
Desenvolvendo Aplicações Android com QtSandro Andrade
 
Programação Android - Básico
Programação Android - BásicoProgramação Android - Básico
Programação Android - BásicoHugoDalevedove
 
RAD Studio XE8 - Delphi Tour 2015
RAD Studio XE8 - Delphi Tour 2015RAD Studio XE8 - Delphi Tour 2015
RAD Studio XE8 - Delphi Tour 2015Fernando Rizzato
 
Desenvolvimento Android: Faça da maneira certa
Desenvolvimento Android: Faça da maneira certaDesenvolvimento Android: Faça da maneira certa
Desenvolvimento Android: Faça da maneira certaNelson Glauber Leal
 

Andere mochten auch (20)

Curso de android
Curso de androidCurso de android
Curso de android
 
Curso Android Slide 5 Deploy - Wellington Pinto de Oliveira
Curso Android Slide 5 Deploy - Wellington Pinto de OliveiraCurso Android Slide 5 Deploy - Wellington Pinto de Oliveira
Curso Android Slide 5 Deploy - Wellington Pinto de Oliveira
 
Webinar: Usando o InduSoft Web Studio para Criar Gráficos HTML5 IHM/SCADA
Webinar: Usando o InduSoft Web Studio para Criar Gráficos HTML5 IHM/SCADAWebinar: Usando o InduSoft Web Studio para Criar Gráficos HTML5 IHM/SCADA
Webinar: Usando o InduSoft Web Studio para Criar Gráficos HTML5 IHM/SCADA
 
Redes de Computadores Capítulo 6 - Camada de Transporte
Redes de Computadores Capítulo 6 - Camada de TransporteRedes de Computadores Capítulo 6 - Camada de Transporte
Redes de Computadores Capítulo 6 - Camada de Transporte
 
Curso Android Slide 2 Introdução Plataforma - Wellington PInto de Oliveira
Curso Android Slide 2 Introdução Plataforma - Wellington PInto de OliveiraCurso Android Slide 2 Introdução Plataforma - Wellington PInto de Oliveira
Curso Android Slide 2 Introdução Plataforma - Wellington PInto de Oliveira
 
Construindo sua primeira aplicação android
Construindo sua primeira aplicação androidConstruindo sua primeira aplicação android
Construindo sua primeira aplicação android
 
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
 
Desenvolvendo para Android
Desenvolvendo para AndroidDesenvolvendo para Android
Desenvolvendo para Android
 
Desenvolvendo Aplicativos com Android
Desenvolvendo Aplicativos com AndroidDesenvolvendo Aplicativos com Android
Desenvolvendo Aplicativos com Android
 
Instalação de Aplicativos Linux
Instalação de Aplicativos LinuxInstalação de Aplicativos Linux
Instalação de Aplicativos Linux
 
Android 02 - Recycler View Adapter
Android 02 - Recycler View AdapterAndroid 02 - Recycler View Adapter
Android 02 - Recycler View Adapter
 
Desenvolvimento de Aplicativos para a Plataforma Android
Desenvolvimento de Aplicativos para a Plataforma AndroidDesenvolvimento de Aplicativos para a Plataforma Android
Desenvolvimento de Aplicativos para a Plataforma Android
 
Curso Android 01: Introdução
Curso Android 01: IntroduçãoCurso Android 01: Introdução
Curso Android 01: Introdução
 
Apostila Android
Apostila AndroidApostila Android
Apostila Android
 
Desenvolvimento de aplicações para a plataforma google android
Desenvolvimento de aplicações para a plataforma google androidDesenvolvimento de aplicações para a plataforma google android
Desenvolvimento de aplicações para a plataforma google android
 
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...
 
Desenvolvendo Aplicações Android com Qt
Desenvolvendo Aplicações Android com QtDesenvolvendo Aplicações Android com Qt
Desenvolvendo Aplicações Android com Qt
 
Programação Android - Básico
Programação Android - BásicoProgramação Android - Básico
Programação Android - Básico
 
RAD Studio XE8 - Delphi Tour 2015
RAD Studio XE8 - Delphi Tour 2015RAD Studio XE8 - Delphi Tour 2015
RAD Studio XE8 - Delphi Tour 2015
 
Desenvolvimento Android: Faça da maneira certa
Desenvolvimento Android: Faça da maneira certaDesenvolvimento Android: Faça da maneira certa
Desenvolvimento Android: Faça da maneira certa
 

Ähnlich wie Minicurso de Android Básico I - Dia 2

Minicurso de Android Básico I - Dia 1
Minicurso de Android Básico I - Dia 1Minicurso de Android Básico I - Dia 1
Minicurso de Android Básico I - Dia 1Thales Levi
 
Spring & Struts
Spring & StrutsSpring & Struts
Spring & Strutseduan
 
Trabalho 4 Semestre e 5 Semestre 2015
Trabalho 4 Semestre e 5 Semestre 2015Trabalho 4 Semestre e 5 Semestre 2015
Trabalho 4 Semestre e 5 Semestre 2015Rodrigo Marinho
 
Gestão de Projectos de SW OO Métricas Estimações e Planificações
Gestão de Projectos de SW OO Métricas Estimações e PlanificaçõesGestão de Projectos de SW OO Métricas Estimações e Planificações
Gestão de Projectos de SW OO Métricas Estimações e PlanificaçõesRogerio P C do Nascimento
 
Integração de Tecnologias
Integração de TecnologiasIntegração de Tecnologias
Integração de Tecnologiaselliando dias
 
Desenvolvendo com Bootstrap: um framework front-end que vale a pena!
Desenvolvendo com Bootstrap: um framework front-end que vale a pena!Desenvolvendo com Bootstrap: um framework front-end que vale a pena!
Desenvolvendo com Bootstrap: um framework front-end que vale a pena!Thiago Nascimento Oliveira
 
Apresentação comsolid 2016
Apresentação comsolid 2016Apresentação comsolid 2016
Apresentação comsolid 2016Laryssa Muniz
 
Sistemas operacionais de rede exercicio de sala
Sistemas operacionais de rede exercicio de salaSistemas operacionais de rede exercicio de sala
Sistemas operacionais de rede exercicio de salaCarlos Melo
 
UML - Criando Diagramas Eficientes
UML - Criando Diagramas EficientesUML - Criando Diagramas Eficientes
UML - Criando Diagramas EficientesRodrigo Cascarrolho
 

Ähnlich wie Minicurso de Android Básico I - Dia 2 (20)

Minicurso de Android Básico I - Dia 1
Minicurso de Android Básico I - Dia 1Minicurso de Android Básico I - Dia 1
Minicurso de Android Básico I - Dia 1
 
Aula-04-UML.pptx
Aula-04-UML.pptxAula-04-UML.pptx
Aula-04-UML.pptx
 
Pesquisa ppi 2
Pesquisa ppi 2Pesquisa ppi 2
Pesquisa ppi 2
 
República de angola
República de angolaRepública de angola
República de angola
 
Spring & Struts
Spring & StrutsSpring & Struts
Spring & Struts
 
Aula2
Aula2Aula2
Aula2
 
Trabalho 4 Semestre e 5 Semestre 2015
Trabalho 4 Semestre e 5 Semestre 2015Trabalho 4 Semestre e 5 Semestre 2015
Trabalho 4 Semestre e 5 Semestre 2015
 
Gestão de Projectos de SW OO Métricas Estimações e Planificações
Gestão de Projectos de SW OO Métricas Estimações e PlanificaçõesGestão de Projectos de SW OO Métricas Estimações e Planificações
Gestão de Projectos de SW OO Métricas Estimações e Planificações
 
Integração de Tecnologias
Integração de TecnologiasIntegração de Tecnologias
Integração de Tecnologias
 
Desenvolvendo com Bootstrap: um framework front-end que vale a pena!
Desenvolvendo com Bootstrap: um framework front-end que vale a pena!Desenvolvendo com Bootstrap: um framework front-end que vale a pena!
Desenvolvendo com Bootstrap: um framework front-end que vale a pena!
 
FC-Logic
FC-LogicFC-Logic
FC-Logic
 
Cap05
Cap05Cap05
Cap05
 
Cap05
Cap05Cap05
Cap05
 
Apresentação comsolid 2016
Apresentação comsolid 2016Apresentação comsolid 2016
Apresentação comsolid 2016
 
Aula Introdução a Linguagem XML
Aula Introdução a Linguagem XMLAula Introdução a Linguagem XML
Aula Introdução a Linguagem XML
 
Sistemas operacionais de rede exercicio de sala
Sistemas operacionais de rede exercicio de salaSistemas operacionais de rede exercicio de sala
Sistemas operacionais de rede exercicio de sala
 
apostila matlab
apostila matlabapostila matlab
apostila matlab
 
Python com TDD
Python com TDDPython com TDD
Python com TDD
 
Java e orientação a objetos
Java e orientação a objetosJava e orientação a objetos
Java e orientação a objetos
 
UML - Criando Diagramas Eficientes
UML - Criando Diagramas EficientesUML - Criando Diagramas Eficientes
UML - Criando Diagramas Eficientes
 

Minicurso de Android Básico I - Dia 2

  • 1. Minicurso Básico de Android – 2º Dia Thales Levi Azevedo Valente
  • 2. Apresentação • Thales Levi Azevedo Valente – selaht7@gmail.com – Bacharel em Ciência da Computação – UFMA – Pesquisador em: • Processamento de Imagens • Android – Lattes: • http://lattes.cnpq.br/1509490497932923 (28/05 - 03/07)/2015 2Thales Levi Azevedo Valente - UFMA
  • 3. O trabalho Minicurso de Android Básico I (este trabalho), bem como suas outras partes (referente também aos dias 2, 3 e 4), de Thales Levi Azevedo Valente está licenciado com uma Licença Creative Commons - Atribuição-NãoComercial-SemDerivações 4.0 Internacional. Para ver uma cópia desta licença, visite http://creativecommons.org/licenses/by-nc-nd/4.0/. • Você é livre para: – Copiar, distribuir o material • Sobre as seguintes condições: – Atribuição de créditos: você deve fazer referência ao autor – Não-comercial: você não deve usar este material para propósitos comerciais – Não-Derivados: Se você criar trabalhos derivados deste, você não deve distribuí-lo. Termos de uso deste material (28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 3
  • 4. Roteiro 2º Dia • Gerenciadores de Layout • AbsoluteLayout • LinearLayout • RelativeLayout • TableLayout • ScrollView • Widgets – Componentes de Interface • Views • TextView • EditText • ImageView • ScaleTypes • Button • CheckBox • RadioGroup • Spinner • ArrayAdapter (28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 4
  • 5. Widgets – Componentes de Interface
  • 6. • Unidade básica de componentes de interface com o usuário no Android (superclasse dos widgets) • Ocupa uma área retangular na tela • Responsável por elaboração e captura de eventos relacionados a si mesmo • Permitem instância em XML ou Java. São exemplos de subclasses: Views (28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 6  TextView  EditText  ImageView  Button  CheckBox  Spinner  RadioGroup  RadioButton
  • 7. • Permite exibir textos estáticos na tela • Por padrão, não permite edição de texto • Alguns atributos: – text : define o texto que seria exibido no componente. – textStyle : define o estilo do texto. As opções possíveis são negrito, itálico e normal. – fontFamily : especifica a família da fonte do texto. – typeFace : define o tipo de letra para o texto. Os valores possíveis são normal, sans, serif e espaçamento fixo. – textSize : define o tamanho do texto. Recomenda-se a utilização sp para o tamanho. – textColor : define a cor do texto. Definida em hexadecimal ou como uma referência a outro recurso. – background : define a cor de fundo do texto. Definido da mesma forma descrito anteriormente. – lines : define a altura exata do TextView em linhas. – clickable : indica se a exibição reage a eventos click. – autoLink : identifica os links no texto e os converte em clicáveis (web, email, telefone). TextView (28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 7
  • 8. TextView (28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 8 TextViews instanciados em Java TextViews instanciado em XML O primeiro TextView foi gerado em XML e os seguintes gerados dinâmicamente
  • 9. • Como boa prática, você deve utilizar o recurso strings.xml ao invés de colocar o texto diretamente num TextView. • Isso se aplica a qualquer outro componente de interface que tem região textual. Ex: Regiões Textuais e o recurso Strings.xml Quando o texto é inserido diretamente na região textual, é sugerido a você usar o recurso Strings.xml. Mas, se você optar por não seguir a sugestão, seu código funcionará sem problemas. (28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 9
  • 10. Regiões Textuais e o recurso Strings.xml Localização, no projeto, do recurso strings.xml Exemplo de como adicionar uma string no arquivo string.xml formato: <string name= “frase identificadora”> frase que aparecerá na região textual </string> Exemplo de como utilizar um recurso de string. Compare com o slide anterior (28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 10
  • 11. • Permite que o usuário insira valores por meio de teclado físico ou virtual. • Alguns atributos: – Hint: texto explicativo que diz o que deve ser inserido no componente – Text: texto simples – inputType • textCapCharacter: texto com todas as letras em maiúsculo • textEMailAddress: usado para campos de e-mail • textPassword: usado para campos de senha • Number: permite apenas números (sem sinais) • numberSigned: permite apenas números (com sinais) • Phone: usado para digitação de números de telefone EditText (28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 11
  • 12. • No slide 37 tem exemplos de como definir em XML. Este caso especificamente refere-se ao EditText de e-mail. Para se obter o que foi digitado pelo usuário, em código, faça: EditText (28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 12 1- recupero o objeto pelo seu ID (o ID é opcional e definido em XML) 2- Pego o texto e converto para String
  • 13. • Componente que permite exibir imagens • As imagens podem ser carregadas a partir de: – Arquivos da galeria de imagens – Internet – Da pasta de recursos do aplicativo – algum tratamento de imagens (edição, processamento, etc) • Oferece diversas opções de exibição (escala, recorte, etc) ImageView (28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 13
  • 14. • Como usar em XML: – src: seta a imagem no ImageView. ImageView (28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 14
  • 15. • Como usar em Java: ImageView (28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 15 Escale o quanto for necessário em X e/ou Y. Tem prioridade sobre adjustViewBounds, por isso não preservou a razão de aspecto
  • 16. • Como usar em Java: ImageView (28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 16 Compare com o slide anterior e comprove ;)
  • 17. • ScaleTypes e seus resultados ImageView (28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 17 Com adjustViewBounds Com os ScaleTypes
  • 18. • É um componente de interface que consiste em um texto ou ícone (ou ambos), que comunica qual ação ocorre quando o usuário o toca. – Para ícone pode-se utilizar ImageButton Button ÍconeTexto Texto e Ícone (28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 18
  • 19. • Quando o usuário “clica” em um botão, tal botão recebe um evento de click. Este evento pode ser manipulado de duas maneiras 1. XML: A. adicione o atributo android:onClick no elemento <Button> e dê um nome ao método que irá tratar o evento. B. Crie o método dentro da Activity em que aquele botão está instanciado. • Deve ser público • Deve retornar void • Deve conter como parâmetro uma única View. Button (28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 19
  • 20. 2. Usando onClickListener A. Instancie o botão em tempo de execução ou recupere o botão definido no XML pelo seu ID. B. Adicione um onClickListener para o botão. Button Obs: mais de um botão pode chamar o mesmo método que trata o click. Neste caso, você pode verificar o ID da View antes de tomar alguma ação. (28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 20
  • 21. • Permite ao usuário selecionar uma ou mais opções de um determinado conjunto. • Tem que ser verificado quais caixas estão ativadas e/ou desativadas. CheckBox Exemplo de CheckBox (28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 21
  • 22. CheckBox Instanciando em XML Criando uma variável e recuperando o checkbox pelo ID em código Ao usuário solicitar o total, se o checkBox do lápis estiver verificado, realizo a ação correspondente (no caso, estou recuperando a quantidade de lápis indicada pelo usuário no campo EditText, multiplicando pelo preço do lápis e somando ao total – variável resultado) (28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 22
  • 23. • Classe usada para agrupar um conjunto de Radio Buttons de tal forma que não seja permitida múltiplas escolhas. • Em outras palavras, dentro de um Radio Group, a escolha de um Radio Button anula a escolha de outro • Use este componente apenas se você quer mostrar as opções lado a lado. Senão, considere utilizar Spinner (discutido mais à frente) para economizar espaço na tela. • Muito útil para fazer enquetes. RadioGroup (28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 23
  • 24. RadioGroup Exemplo de utilização de RadioGroup e RadioButtons (28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 24
  • 25. RadioGroup Exemplo anterior definido em XML. Obs: Não esqueça que em uma aplicação, como boa prática, você não deve colocar o texto diretamente em um componente textual e utilizar o recurso string.xml (28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 25
  • 26. RadioGroup Dando ação ao nosso exemplo (28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 26
  • 27. • Provê uma rápida seleção de um elemento dentro de um conjunto • Por padrão, um spinner mostra apenas o elemento selecionado e sempre o primeiro elemento é o selecionado incialmente. • Ao ser tocado, mostra uma lista com os elementos do conjunto, no qual o usuário seleciona um dos elementos. Spinner Exemplo de seleção utilizando Spinner (28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 27
  • 28. Spinner XML Código (28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 28
  • 29. • No geral, adaptadores são classes que fazem ligação entre coleções de objetos e componentes de interface com o usuário. • Em seu construtor, informamos 3 parâmetros 1. A Activity em que será instanciada 2. Um recurso de layout (utilizaremos um contido no SDK) 3. Uma coleção de objetos • Depois de criado, setamos no componente que irá utilizá-lo. No caso do slide anterior, no Spinner. ArrayAdapter Obs: Para acessar recursos já predefinidos presentes no SDK, utilizamos a classe android.R (28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 29
  • 30. • Por último, adicionamos um onItemSelectedListener e implementamos o método onItemSelected que nos dá acesso: – ao ArrayAdapter em que a seleção aconteceu – à View selecionada – à posição, no adaptador, da View selecionada – à posição, na linha, do item selecionado. Spinner (28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 30
  • 32. • São elementos que definem como os elementos de interface estarão organizados na tela ou em porção dela • Cada um se comporta de um forma específica • Pode-se aninhar um gerenciador com outro (A contém B) • Alguns exemplos de gerenciadores: – AbsoluteLayout – FrameLayout – LinearLayout – RelativeLayout – TableLayout – ScrollView Gerenciadores de Layouts (28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 32
  • 33. • Trata a tela como um plano cartesiano • Posiciona os componentes fornecendo coordenadas x e y. • Os valores de x crescem da esquerda para direita, e de y de cima para baixo • A posição padrão dos objetos é (0,0) – canto superior esquerdo • Caiu em desuso por devido à sua baixa flexibilidade – é melhor dar posições relativas do que absolutas, pois há diversos tamanhos de telas e resoluções e a tela pode mudar a sua horientação (horizontal/vertical). AbsoluteLayout (28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 33
  • 34. AbsoluteLayout (x1,y1) (0,0) (x5,y5) (x3,y3)(x4,y4) (x2,y2) Exemplo gráfico do uso do AbsoluteLayout (28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 34
  • 35. AbsoluteLayout Situação B - 3,7” 480 x 800 hdpi Situação A - 4,7” 720 x 1280 xhdpi Um exemplo de problema utilizando AbsoluteLayout. Uma posição (x,y) numa tela maior pode não existir em uma tela menor (28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 35
  • 36. • Um dos gerenciadores e layout mais utilizados. • Permite organizar os componentes de interface de forma linear. • Lembra uma organização de elementos em um vetor. – Vertical: cada ítem é adicionado abaixo de seu antecessor – Horizontal: cada ítem é adicionado do lado direito de seu antecessor LinearLayout View View View View View View View Horizontal Vertical (28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 36
  • 37. • Posiciona um componente filho em relação ao layout pai ou a outros componentes filhos RelativeLayout (28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 37
  • 38. • Organiza os componentes através de linhas e colunas (uma tabela). • Cada linha é uma table row • As colunas são definidas automaticamente na medida que adicionamos os componentes em uma table row. • Cada table row pode ter mais de um componente e cada um será organizado de forma a parecer que é uma coluna, porém não aparecerá nenhuma linha informando que é uma coluna TableLayout (28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 38
  • 39. • Primeira TableRow – TextView • Segunda TableRow – TextView e EditText • Terceira TableRow – ... TableLayout (28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 39
  • 40. • É um gerenciador com barra de rolagem que permite que componentes de interface sejam visualizados mesmo que o espaço ocupado por estes sejam maior que a tela do dispositivo • Permite apenas um componente filho. Geralmente utiliza-se o LinearLayout com orientação vertical e constrói-se uma hierarquia complexa tendo este último como pai. • Obs: para rolagem horizontal, utilize HorizontalScrollView (Fazendo um trocadilho, o ScrollView é um avô que quis quer ter apenas um filho! HaHaHa) ScrollView (28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 40
  • 41. ScrollView Widget Widget Widget Vertical Widget Widget Widget ScrollView LinearLayout (ou outro elemento) Região visível na tela Região não visível (necessário rolagem) (28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 41
  • 42. (28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 42 Dúvidas ?
  • 43. (28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 43 Até a próxima !
  • 44. (28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 44 • As imagens utilizadas foram adquiridas, em maior parte, através de screenshots da tela do computador do próprio autor deste material. • As imagens especificadas abaixo foram adquiridas através da ferramenta de pesquisa de imagens da google https://images.google.com/. Todos os créditos referente a elas são dados aos locais selecionados através de tal ferramenta. Se você é autor e deseja que as imagens sejam removidas, entre em contato e será feito. http://www.appschopper.com/blog/wp-content/uploads/2013/03/Be-the-Pro-with-Best-Books-for-Android-Application-Development- Banner.jpg http://radixsmartclass.in/radixtemp/wp-content/uploads/2013/03/android_on_android_classroom_control.jpg http://vamsystems.com/Images/ContentImages/2015/1/android-banner.jpg http://3.bp.blogspot.com/-sRZob5WYyes/UzU7MkCOR0I/AAAAAAAACx4/sAlM8OIRrnQ/s1600/android-app-banner.png http://hd.wallpaperswide.com/thumbs/android_green_background-t2.jpg http://4.bp.blogspot.com/-OOXne6FICPk/VSGOCJtMm2I/AAAAAAAAABQ/ScOC2wFsnJU/s1600/android.png http://www.androidcentral.com/sites/androidcentral.com/files/postimages/108579/bugdroid-salute-cropped.png Referências
  • 45. (28/05 - 03/07)/2015 Thales Levi Azevedo Valente - UFMA 45 • LECHETA, R. R. (2010). Google Android. 2a edição, São Paulo, Novatec. • LECHETA, R. R. (2012). Google Android Para Tablets - Aprenda a Desenvolver Aplicações Para o Android de Smartphones a Tablets. 2ª edição, São Paulo, Novatec. • ANDROID DEVELOPERS. Disponível em: <http://developer.android.com/develop/index.html.>. Acesso em: junho de 2015. Referências