2. Introdução
Android é um sistema operacional voltado para
dispositivos móveis
Desenvolvido pela OHA - Open Handset Alliance
(aliança entre várias empresas:
Google, HTC, LG, Samsung, Motorola...)
Sistema Operacional baseado no kernel 2.6 do Linux e
kernel 3.x(Android versão 4.0 ou superior)
3. Introdução
Seu código é open source sob licença Apache,
permitindo que seja modificado livremente e
redistribuídos
O ambiente de desenvolvimento oficial é o Eclipse +
plugin ADT(Android Development Tools), usando a
linguagem Java
Laptops, netbooks, smartbooks e TVs inteligentes já
estçao utilizando o sistema operacional Android
4. Ambientação
Download do Android ADT Bundle, encontrado em
http://developer.android.com/sdk/index.html
No ADT Bundle já se encontram todos os softwares
que antes eram necessários ser baixados
separadamente: Eclipse + ADT plugin, Android SDK
Tools, Android Platform-tools, etc.
5. Criando uma aplicação
Com o Eclipse aberto(e já ambientado), basta clicar
em File -> New -> Android Application Project
Será necessário preencher alguns campos:
Application Name – nome da aplicação
Project Name – nome do projeto no Eclipse
Package Name – parâmetro bastante importante pois
serve como identificador único(dentre todos os outros
publicados no Google Play) da aplicação
Acitivity Name – nome da Activity
Layout Name – nome do layout da tela inicial
6. Dalvik Debug Monitor Server
(DDMS)
Ferramenta que possui diversas funções que
interagem com o emulador ou o próprio celular
É possível utilizá-la para visualizar logs da aplicação,
simular ligações telefônicas, simular envio de SMS,
simular uma posição GPS, etc
7. LogCat
Local onde são exibidas as mensagens de log da
aplicação
Se o método System.out.println() for chamado, sua
saída não será no console, como de costume, e sim no
LogCat
8. LogCat
Tipos de logs:
Informação – Log.i(“”,””)
Erro – Log.e(“”, “”)
Verbose – Log.v(“”,””)
Alerta – Log.w(“”,””)
Debug – Log.d(“”,””)
Cada tipo tem uma cor, melhorando a visualização no
LogCat
9. Arquivos gerados
activity_main.xml
Localizado na pasta /res/layout
Define a interface gráfica que será apresentada na tela
da aplicação
Arquivo criado com basicamente duas tags:
<RelativeLayout> e <TextView>
A tag <RelativaLayout> indica que o layout raiz da
aplicação será do tipo relativo
A tag <TextView>, localizada dentro da tag
<RelativeLayout>, indica que a telá terá uma View do tipo
TextView localizada no centro
10. Arquivos gerados
strings.xml
Localizado na pasta /res/values
Permite a organização de todas as mensagens da aplicação
Além de ser uma boa prática de programação, facilita a
internacionalização do aplicativo
R.java
Classe gerada automaticamente
Contém constantes de todos os recursos da aplicação(recursos
estão localizados na pasta /res)
Toda vez que um arquivo da pasta /res é retirado, adicionado
ou modificado, a classe R.java é regerada
11. Arquivos gerados
MainActivity.java
Localizado no pacote definido no momento da criação do
projeto
Classe que herda de Activity, representa uma tela na
aplicação
Responsável por tratar os eventos de tela, como um
clique em um botão, por exemplo
O primeiro método disparado dessa classe é o
onCreate(Bundle). Nesse método é definido que o layout
que será utilizado é o acitivity_main.xml
12. Arquivos gerados
AndroidManifest.xml
Funciona como o coração da aplicação
Contém todas as configurações de uma aplicação:
Nome da aplicação
Pacote da aplicação
Declaração de Activities
Declaração de Services
Declaração de BroadcastReceivers
Quais permissões a aplicação necessitará para ser
executada
Ícone da aplicação
14. O que é uma Activity?
Representa uma tela do aplicativo
Trata os eventos ocorridos – Ex: onClick
setContentView(View): define a interface que será
usada
onCreate (Bundle)
AndroidManifest .xml
Layout em xml
17. Ciclo de vida
onCreate(Bundle)
onStart()
onResume()
onPause()
onStop()
onDestroy()
onRestart()
18. View
Superclasse das classes de interface (UI) que
interagem com o usuário
Propriedades:
Layout – Tamanho do controle. Ex: (match, fill..)
Padding – Distância para a margem
Gravity – Define a posição (ex: center, left, top..)
Text
Background
Entre outras…
19. TextView
Representa um texto na tela
Similar ao JLabel do Swing
Alguns tipos comuns: normal, com
hint, autolink, password, etc..
20. EditText
Utilizado para entrada de
texto
Similar ao JTextField no
Swing
Tipos de entrada: texto
normal, apenas números,
senha, etc
21. Button
Cria um botão na tela
Normalmente associado a um evento de
onClick, definido no XML ou criado listener na activity
22. Button - XML
1o: Define propriedade no nó do botão:
2o: Cria método na Activity
23. Button - onClickListener
1o: Faça a activity implementar onClickListener:
2o: Implementar o método onClick(View v)
Solução alternativa: classe anônima!
26. Prática
Criar uma calculadora de IMC (peso/altura^2)
(kg/m^2), que receba o peso e a altura do usuário
(EditText ou SeekBar), calcule e exiba o resultado
(TextView, Image, etc) conforme a tabela abaixo:
28. Layout
Classes que herdam de ViewGroup
Usados para organizar componentes graficos na tela
Podem ser desenhados de duas formas:
Via XML, pelo plugin gráfico do Eclipse
Via programação, em tempo de execução
30. FrameLayout
Organiza seus componentes em forma de pilha, sendo
o último componente adicionado o do topo da pilha
Muito utilizado quando se quer ter uma imagem de
fundo
32. RelativeLayout
Ajusta seus componentes atraves de relacionamentos
entre os próprios componentes ou ao seu pai
Desvantagem: caso seja alterado a posição de um
componente, pode acontecer de os outros
componentes da tela perderem suas posições
originais, pois um componente sempre estará
posicionado em relação a outro.
38. Prática 02
Criar três activites, navegando entre elas usando um menu (criado
com linear, table ou fragments), tal que o conteúdo das activites
contenha:
activity1) três editText e três botões, dispostos em linhas
activity2) 4 imagens dispostas nos cantos + um botão no na parte
inferior ocupando toda a linha
activity3) Uma imagem grande, maior que a tela, com a opção de
visualizar toda
observação: certifique-se que não há grandes diferenças entre
telas pequenas e telas grandes (de 2.7'' a 10.1''), principalmente
na activity2
43. Toast
Exibe uma mensagem temporária ao usuário
Não interage com o usuário
44. Notifications
Classe que representa uma notificação ao usuário
Se localiza na barra de status do celular
Bastante utilizada para notificar o usuário que algo
ocorreu de modo que não atrapalhe o que ele está
fazendo no momento
46. ListActiviy
Activity especial para listar elementos, com uma
listView interna
Scrollable
Necessário preencher um ArrayAdapter para mostrar
os dados
onListItemClick(ListView l, View v, int position, long id)
47. Dialog
Pequena janela que exibe um alerta para o usuário e
pode aguardar uma tomada de decisão dele
48. LayoutInflate
Transforma um layout XML em uma View
Usado quando se quer modificar um layout em tempo
de execução
50. Intent
“Intenção” de fazer algo
Classe que representa uma mensagem enviada ao
sistema operacional
Pode ser utilizada para:
Abrir uma Activity da aplicação atual
Abrir uma Activity de outra aplicação
Abrir o Google maps
Abrir o browser
Abrir o aplicativo de câmera fotográfica
etc
57. SQLite
Biblioteca escrita em linguagem C que implementa um
banco de dados SQL
Rápido, leve e poderoso
Multiplataforma
Suporta tipo de dados integer, real, text e blob
Uma das formas de persistir dados no Android
58. SQLite
Não necessita de instalação, configuração ou
administração
Escreve os dados no próprio disco do dispositivo(a
biblioteca não se conecta a um servidor de banco de
dados)
Não permite que os dados de uma aplicação sejam
acessados por outra aplicação
59. SharedPreferences
Permite salvar dados do tipo
primitivo(boolean’s, float’s, int’s, long’s, e string’s) na forma
de chave-valor
Os dados ficam salvos mesmo quando a aplicação é
fechada
SharedPreferences geralmente não é utilizado para salvar
grandes cargas de dados, mas apenas para salvar
configurações de usuário ou configurações da própria
aplicação
Um exemplo bastante utilizado é salvar o login e senha de
um usuário. Isto faz que o usuário não necessite digitar seu
login e senha sempre
Bundle: a mapping from string values to various Parcelable type
onCreate(Bundle):Como já visto anteriormente, é o primeiro método a ser executado quando uma activity é lançada. Geralemente é responsável por carregar os layouts XML e outras operações de inicialização. É executado somente uma vez durante a “vida útil” de uma Activity.onStart(): É chamado quando a Activity está ficando visível para o usuário. Dependendo do estado da aplicação, esse método pode ser chamado após o onCreate() ou depois do onRestart(), que é quando a aplicação que estava em background volta a ter focoonResume(): É chamado quando a Activity está executando como Activity principal, ou seja, quando ela está no topo da pilha.onPause(): Método chamado quando a Activity do topo da pilha é interrompida por algum motivo(uma ligação recebida, por exemplo). É nesse método que o estado da aplicação é salvo para quando a voltar a executar, tudo possa ser recuperado.onStop(): Chamado quando uma Activity perde completamente o foco(uma outra Activity é iniciada, por exemplo). Em seguida é chamado o método onDestroy()(quando a Acitivity for encerrada) ou o método onRestart(quando a Activity for reiniciada)onDestroy(): É chamado quando uma Activity é finalizada. Pode ser chamado pelo método finish() da aplicação, ou quando o só decide liberar recursos. É executado somente uma vez durante a “vida útil” de uma Activity.onRestart(): Chamada imediatamente antes do onStart(), quando uma Activity volta a ter foco depois de estar em background.