Este documento fornece uma introdução ao desenvolvimento de aplicativos para Android. Resume os principais pontos abordados:
1. Apresenta a história e características do Android, desde seu lançamento em 2008 até as mais recentes versões como o Lollipop.
2. Discute as principais ferramentas de desenvolvimento, comparando Eclipse vs Android Studio e explicando recursos como o Android SDK.
3. Explica conceitos-chave da arquitetura do Android, como a organização de projetos, layouts, strings e outros recursos.
2. Eu
Afonso da Silva Machado
7º Semestre de Engenharia de Computação
Universidade Estadual de Feira de Santana
Membro da Empresa Junior de Engenharia de
Computação
3. Você
Quem tem um aparelho Android?
Quem sabe programar em Java?
Quem já programou pra alguma plataforma móvel?
Quem já “programou” pelo menos um Hello World pra
Android?
5. Metodologia
•Dividindo em três partes
1. Manuseando a IDE
2. Aprendendo conceitos fundamentais
3. Aplicando seus conceitos
a) Um pequeno app para cada conceito
b) Apps completos para exercitar
6. Você
Código Aberto
Desenvolvido inicialmente pela Android Inc.
Comprado pela Google em 2005 e Lançado em 2008
Baseado no Kernel do Linux
Rodava com uma máquina virtual Java própria: Dalvik VM,
a partir da versão 5.0 roda com uma nova máquina virtual
ART (Android Run Time).
16. Várias versões
1.0: 2008, O lançamento, HTC Dream;
2.0: Google, Eclair e Froyo, Nexus One;
2.3: Gingerbred, o sucesso;
3.0: Versão para Tablets, Honeycomb;
4.0: A ascenção, Ice Cream Sandwich, Jelly Bean e Kit Kat;
5.0: A ouzadia, Lollipop.
22. Java + Um bando de coisa
Chato?
Quantos gostam de java?
Quantos gostam de eclipse?
23. A idéia era: Android gambiarreitor tabajara
Seu kit de ferramentas e
plugins Android que você
instala no seu Eclipse, e
pronto, já pode programar
seus apps nativos
24. ADT: Android Developer Tools
O ADT foi a primeira IDE para
desenvolvimento em Android
Todo o processo de build é
baseado na ferramenta Apache Ant
Construído na infraestrutura do
Eclipse
25.
26. Era legal... Mas...
•Interface muito misturada
•Meio eclipse seco, meio Android
•Relativamente pesado
•Emulador quase impossível de ser executado
27. Até que...
16 de maio de 2013
Google I/O
Android KitKat
Google Nexus 5
IDE exclusiva para Android
28. Android Studio
No mesmo mês (Maio de 2014) foi lançado o primeiro
beta o Android Studio, versão 0.1
29. Android Studio
No mês de dezembro de 2014 a Google publicou o
download da primeira versão estável (1.0)
30.
31. Android Studio
Android Studio é a nova suíte
de desenvolvimento de apps
em Android
Foi projetado utilizando a
infraestrutura da IDE IntelliJ IDEA,
da JetBrains
Utiliza o Gradle como novo sistema
de build no processo de
desenvolvimento
32. A idéia é
• Apresentar uma IDE com uma interface intuitiva e
organizada;
• Mais “leve” e mais rápida;
• Multiplataforma;
• Novo sistema de automação de compilação, deixando
de lado o “Ant” e adicionando o “Gradle”.
• Mantendo o Android SDK
33. Features do Android Studio
• Baseado no flexível sistema de build Gradle
• Variantes de build e geração de múltiplos APKs
• Suporte expandido de templates para Google Play
Services e
• vários tipos de dispositivos
• Editor de layout poderoso com suporte para edição de
temas
• Ferramenta Lint para capturar problemas de performance,
34. Features do Android Studio
• usabilidade, compatibilidade de versões, dentre outros
• suporte para utilização do ProGuard e assinatura de apps
• suporte embutido para Google Cloud Platform, tornando
mais fácil
• integrar funcionalidades do Google Cloud Messaging e
App Engine
35. Features do Android Studio
Funcionalidade
Sistema de Build
Build de dependências baseadas no Apache Maven Sim Não
Variantes de build e geração de múltiplos APKs (ex:
Android Wear, Android TV)
Sim Não
Auto-completar de código Android avançado e
refactoring
Sim Não
Editor gráfico de layout Sim Sim
Assinatura de APK e gerenciamento de keystore Sim Sim
Suporte à NDK Sim Sim
36. Requerimentos (pesado mas leve)
Windows OS X Linux
Microsoft Windows 8/7/Vista/2003
(32 ou 64 bit)
Mac OS X 10.8.5 or mais atual, up to
10.10 to up 10.10.1 up 10.10.2
GNOME ou KDE ou Unity desktop no
Ubuntu ou Fedora
2 GB RAM mínimo, 4 GB RAM
recomendado
2 GB RAM mínimo, 4 GB RAM
recomendado
2 GB RAM mínimo, 4 GB RAM
recomendado
500 MB de espaço em disco 500 MB de espaço em disco 500 MB de espaço em disco
16 GB de espaço livre para o Android
SDK e suas imagens de sistema
16 GB de espaço livre para o Android
SDK e suas imagens de sistema
16 GB de espaço livre para o Android
SDK e suas imagens de sistema
Java Development Kit (JDK) 7 ou
mais atual
Java Development Kit (JDK) 7 ou
mais atual
Java Development Kit (JDK) 7 ou
mais atual
Resolução mínima de tela: 1280x800 Resolução mínima de tela: 1280x800 Resolução mínima de tela: 1280x800
37. Android SDK
•Um kit de ferramentas
onde você encontrará
todas as ferramentas
e API’s necessárias
para fazer o seu
aplicativo usando o
Android Studio ou o
Eclipse
48. •É basicamente um emulador do SO no seu
computador (Semelhante ao Virtual Box)
•Dentro de um AVD você pode emular câmera,
rede, memória RAM, armazenamento interno
e processador.
Android Virtual Device (AVD)
49. •Lento quando instalado em máquinas com
pouca memória e baixo processamento
•Devido a travamentos, a experiência com o
sistema e com o seu aplicativo se torna ruim
•Alternativa grátis
•Bom método de testar uma nova versão do
Android
Android Virtual Device (AVD)
50. •Quem tiver um celular Android, use;
•Caso contrário usaremos um AVD;
•Mas criaremos um para entendermos seu
funcionamento
•Seu projeto ja abriu?
Por via das duvidas...
58. Linux Kernel
Permite que a plataforma Android tenha alta
portabilidade
Por ser de código aberto permite que talentos
individuais ou companhias o melhorem ainda mais
(ou piorem –’)
59. Bibliotecas
A camada acima do Kernel contém as bibliotecas nativas do
Android
Essas bibliotecas são todas
escritas em C ou C++ e
compiladas para a arquitetura
de hardware específica
utilizada pelo telefone.
Ex.: Codecs de mídia, Banco de Dados AQL
60. Android Runtime
• Core libraries: gráficos 2D, interações com o SO,
collections do Java
• Máquina Virtual Android Runtime
61. Dalvik VM x ART
• No Dalvik (Just-in-time), os aplicativos instalados no
Android são interpretados pela máquina virtual Dalvik, e
então as informações deles são enviadas até a interface
gráfica
• No ART (Ahead-of-time), os códigos são pré-compilados
na linguagem de execução já durante a instalação dos
aplicativos. Isso significa que a instalação dos softwares
pode ser mais demorada, mas também representa mais
rapidez na execução dos apps
62. Dalvik VM ART
Usa a abordagem just-in-time,
que resulta em menor consumo
de espaço de armazenamento,
mas o tempo de carregamento
dos apps é mais longo;
Usa a abordagem antes-do-
tempo, que compila os aplicativos
quando eles são instalados,
resultando em tempos de carga e
uso do processador menores;
O cache se acumula ao longo do
tempo, de modo que o tempo de
inicialização são rápidos;
O cache é construído no boot dos
dispositivo, logo reiniciar leva
muito mais tempo;
Como o espaço ocupado é
menor, ele unciona melhor para
dispositivos de armazenamento
interno menor.
consome muito mais espaço de
armazenamento, uma vez que ele
armazena aplicativos compilados
além dos APKs.
Sem suporte à 64bits Suporte à 64bits
63.
64. Framoworks e Aplicações
• Gerenciadores de câmera, GPS, janelas...
• Telefone, mensagens, câmera, e o seu aplicativo
68. •Ferramenta de Debug do Android Studio (Já
existia no Eclipse);
•Mas no Android Studio a ferramenta pode
também ser usada para debugar com o seu
smartphone Android
DDMS: Dalvik Debug Monitor Server
69. •Abra a aba “Emulator Tool” e simule uma ligação e
um envio de SMS
Prática
72. Equivale à uma tela.
Cada Activity é definida em dois arquivos
res/layout/activity_nome.xml (visual)
src/.../NomeActivity.java (comportamento)
Activity
87. Estrutura do projeto
Arquivo build.gradle para o módulo app
Contém arquivos de configuração e tarefas do módulo,
como versão mínima, versão padrão, dependências
(escrito em Groovy)
97. Layout
• Todo o layout e interface gráfica de um aplicativo feito
no Android Studio está inserido num arquivo .xml, que é
criado junto com uma Activity;
98. Layout
• Pode ser manuseado
tanto o código xml
quanto a ferramenta de
interface do Android
Studio.
100. Código Java
• src/.../MainActivity.java
• Todas as Activities são herdam da classe ActionBarActivity
• Para cada Actvity há um layout indicado no código
• Qualquer componente da tela é referenciado no arquivo R.java
101. styles.xml
• Contém o estilo que você usa para o aplicativo e seus
componentes
Útil para economizar linhas nos arquivos do
layout, aplicando os estilos dos componentes
102. Arquivo R.java (Gerado pelo compilador)
• Possui métodos estáticos com as referências de todos os
recursos do projeto
• Cada recurso é identificado por um número. O compilador
gera constantes par facilitar o uso de recursos no código
fonte
• É gerada automaticamente pelo Android Studio e nunca
deve ser alterada manualmente
109. Ids!
Os Ids são referenciados no arquivo R.java, para facilitar
a interação com os componentes, basta apenas usar seu
ID
110. Clique!
Usando o método “onClick” e chamando-o no arquivo
.java da sua activity
android:onClick=“botaoClicado”
public void botaoClicado (View v){
}
111. Prática
1. Exibir uma mensagem na tela
2. Exibir algo no Log ao tocar o botão
3. Exibir a quantidade de vezes que o botão foi tocado
4. Mudar o texto do textView (Nosso antigo ‘Hello
World!’)
112. Toast (mensagem na tela)
Toast.makeText(this, "Que botao massa vei", Toast.LENGTH_SHORT).show();
113. Log (não visível para o usuário)
Toast.makeText(this, "Que botao massa vei", Toast.LENGTH_SHORT).show();
//métodos de Log
Log.v //Verbose
Log.d //Debug
Log.i //Info
Log.e //Warnig
Log.wtf //What a F***
114. Método findViewById
• Use este método para acessar qualquer ID disponível para sua aplicação no
arquivo R.java no tempo de execução.
TextView texto = (TextView) findViewById(R.id.textView1);
texto.setText("Clicou "+x+" vezes");
116. Prática
• Adicione um campo de texto ‘EditView’ na sua
Activity
• Ao clicar no botão, altere o TextView para o valor do
campo de texto.
Boa prática: crie um atributo para cada view e inicialize todos
no onCreate (usando findViewById)
119. Prática
Implemente os métodos do ciclo de vida de uma
activity para emitir uma mensagem de log para
cada um
Tente fazer com que onDestroy seja chamado
121. Seu primeiro app funcional!
Usando dos conhecimentos até agora passados,
implemente um aplicativo que cálcule suas 3 médias
de alguma disciplina e diga se você está ou não
aprovado
122. Dica!
Use três ‘EditText’ + 3 ‘TextView’ para as médias
Use um ‘TextView’ (inicialmente vazio) para informar o
resultado
Caso precise, use ‘AbsoluteLayout’ para posicionar
melhor os componentes
123. Dica!
No seu layout (xml), use o método
‘android:maxLenght’ para definir o tamanho máximo
de caracteres no EditText
Use também o método ‘android:inputType’ para definir
o tipo de entrada (Números)
124. Melhorando o app!
Para evitar erros, defina os ‘EditText’ como ‘0’
inicialmente, usando setText();
126. Melhorando o app!
Brincar com o Dialog, fazendo com que apareça uma
mensagem diferente no botão, ao passar ou perder
127. Melhorando o app
Faça com que ele calcule a média que você precisa
numa prova final em caso de reprovação
Fórmula para nota mínima da final
finalMinima = 12.5 – (1.5 * media)
129. Preferências
Como salvar dados para que eles possam ser
acessados da próxima vez que o app seja
executado?
SharedPreferences é uma forma conveniente de
salvar pequenas quantidades de dados.
133. Intents
São mensagens que seu programa envia para o
sistema para requisitar funcionalidades de outros
Componentes
Exemplo: uma Activity envia um Intent para
requisitar ao sistema que outra Activity seja aberta
Outro exemplo: uma Activity envia um Intent para
requisitar ao sistema que abra um navegador na
página www.google.com
134. Abrindo outra Activity
Intent intent = new Intent(this, OutraActivity.class);
startActivity(intent);
Pode ser chamado, por exemplo, ao clicar em um botão
A nova activity é “empilhada” sobre a atual
135. Fechando a Activity
Usando o método ‘finish();’
Quando uma activity é fechada
(desempilhada), o Sistema
mostra a Activity anterior, que
estava abaixo da atual
A Activity é desempilhada para
evitar empilhamentos
desnecessários, gerando alto
consume de memória
136. Prática
Aproveitando o seu projeto Hello World, crie uma nova
Activity chamada OutraActivity.java
Na MainActivity.java, adicione um novo botão que ao ser
clicado abre OutraActivity
Na OutraActivity adicione um botão que ao ser clicado
feche a Activity
137. Passando dados de uma Activity pra outra
Intent intent = new Intent(this, OutraActivity.class);
intent.putExtra(“pi”, 3.14);
startActivity(intent);
Bundle extras = getIntent().getExtras()
if (extras != null) {
float x = extra.getFloat(“pi”);
}
MainActivity.java
OutraActivity.java
Pode ser chamado no onCreate();
138. Retornando dados de uma Activity
Intent intent = new Intent(this, OutraActivity.class);
startActivityForResult(intent, 1234);
Intent data = new Intent();
data.putExtra(“pi”, 3.14);
setResult(RESULT_OK, data);
finish();
MainActivity.java
OutraActivity.java
MainActivity.java
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1234 && resultCode == RESULT_OK) {
float pi = data.getFloatExtra(“pi”);
}
}
139. Exercitando
Adicione dois ‘TextView’ vazios em cada Activity
Faça com que nesses ‘TextView’ aparecam a quantidade
de vezes que você trocou de Activity
Dessa forma:
146. ListView
ListView lista = (ListView) findViewById(R.id.mylist);
String[] values = new String[] { “Jelly Bean”, “KitKat”, “Lollipop” };
ArrayAdapter<String> adapter = new
ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, // layout de um item
values);
lista.setAdapter(adapter);
Crie um novo projeto, adicione
um ListView na Activity, coloque
este código no onCreate, e
observe o que acontece