fundamentos de android

96
Capítulo 1: Introdução ao Android

Upload: felipepalma14

Post on 20-Dec-2015

13 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Fundamentos de Android

Capítulo 1: Introdução ao Android

Page 2: Fundamentos de Android

M.Sc. Márcio Palheta

Instrutor

● Programador desde 2000

● Aluno de doutorado

● Mestre em informática pelo ICOMP/UFAM

● Especialista em aplicações WEB – FUCAPI

[email protected]

● sites.google.com/site/marciopalheta

Page 3: Fundamentos de Android

M.Sc. Márcio Palheta

3/96

Agenda● Dispositivos e o mercado Android

● Instalação do Android Studio

● Gestão de dependências com Gradle

● Controle de versão com GIT

● Trabalhando com o simulador

● Conceitos iniciais - Ciclo de vida de uma Activity

● Usando a pasta de recursos – RES

● Entendendo a classe R.java

● Componentes de tela – por dentro do XML

● Planejamento das telas baseadas em Layouts

Page 4: Fundamentos de Android

M.Sc. Márcio Palheta 4/96

Dispositivos e compatibilidade

Page 5: Fundamentos de Android

M.Sc. Márcio Palheta

5/96

Ambiente de desenvolvimento

● A primeira IDE para desenvolvimento Android foi o Eclipse, usando Android SDK e o plugin ADT Android Developer Tools

● Nessa época, baixávamos:

– O Eclipse Indigo com ADT configurado; ou

– Instalávamos ADT e SDK em uma versão mais nova do Eclipse; ou

– Usávamos o IntelliJ Idea, IDE muito boa e paga. ● Contudo, o Google resolveu criar uma IDE própria para o

Android, baseada no IntelliJ, o Android Studio

Page 6: Fundamentos de Android

M.Sc. Márcio Palheta

6/96

Instalação do Android Studio

● Baixe o Android Studio

● http://developer.android.com/sdk/index.html

● Execute a nova IDE

Page 7: Fundamentos de Android

M.Sc. Márcio Palheta

7/96

Instalação do Android Studio

● Baixe o Android Studio

● http://developer.android.com/sdk/index.html

● Execute a nova IDE

● Na tela de Wizard,

Click em Next

Page 8: Fundamentos de Android

M.Sc. Márcio Palheta

8/96

Instalação do Android Studio

● Baixe o Android Studio

● http://developer.android.com/sdk/index.html

● Execute a nova IDE

● Na tela de Wizard,

Click em Next

● Selecione a opção

Standard e clique

em Next

Page 9: Fundamentos de Android

M.Sc. Márcio Palheta

9/96

Instalação do Android Studio

● Baixe o Android Studio

● http://developer.android.com/sdk/index.html

● Execute a nova IDE

● Na tela de Wizard,

Click em Next

● Selecione a opção

Standard e clique

em Next

● Aceite o contrato

E clicque em Finish

Page 10: Fundamentos de Android

M.Sc. Márcio Palheta

10/96

Baixando arquivos de configuração

● O Android Studio fará download dos componentes necessários, como a versão mais nova do Android SDK

● Esse processo pode ser demorado

Page 11: Fundamentos de Android

M.Sc. Márcio Palheta

11/96

Pensando no projeto Agenda Escolar

● Nova Android APP: Agenda Escolar

● Cadastro de professores

● Interação com professores

– SMS, Ligações, E-mails, Sites, Redes sociais

– Localização no mapa

● Sincronização com Serviço Web

● Baixa e Listagem de disciplinas e ementas

Page 12: Fundamentos de Android

M.Sc. Márcio Palheta

12/96

Pensando no projeto – Agenda escolar

Page 13: Fundamentos de Android

M.Sc. Márcio Palheta

13/96

Pensando no projeto – Agenda escolar

Nosso ponto de partida

Page 14: Fundamentos de Android

M.Sc. Márcio Palheta

14/96

Tela de boas vindas

Page 15: Fundamentos de Android

M.Sc. Márcio Palheta

15/96

Tela de boas vindas

Nosso primeiro projeto

Page 16: Fundamentos de Android

M.Sc. Márcio Palheta

16/96

Criação do projeto AGENDA

Nome da aplicação

Page 17: Fundamentos de Android

M.Sc. Márcio Palheta

17/96

Criação do projeto AGENDA

Pacote da aplicação

Page 18: Fundamentos de Android

M.Sc. Márcio Palheta

18/96

Criação do projeto AGENDA

Diretório da aplicação

Page 19: Fundamentos de Android

M.Sc. Márcio Palheta

19/96

Tipo de aplicação

Telefones e Tablets

Page 20: Fundamentos de Android

M.Sc. Márcio Palheta

20/96

Tela inicial padrão

Page 21: Fundamentos de Android

M.Sc. Márcio Palheta

21/96

Tela inicial padrãoPrimeira Activity

Page 22: Fundamentos de Android

M.Sc. Márcio Palheta

22/96

Configurações da tela inicial

Page 23: Fundamentos de Android

M.Sc. Márcio Palheta

23/96

Configurações da tela inicial

Dados da Tela inicial

Page 24: Fundamentos de Android

M.Sc. Márcio Palheta

24/96

Bem vindo ao Android Studio!

Page 25: Fundamentos de Android

M.Sc. Márcio Palheta

25/96

Bem vindo ao Android Studio!

Arquivos do nossoProjeto Android

Page 26: Fundamentos de Android

M.Sc. Márcio Palheta

26/96

Bem vindo ao Android Studio!

Paleta de componentes

Page 27: Fundamentos de Android

M.Sc. Márcio Palheta

27/96

Bem vindo ao Android Studio!

Pré-visualização de tela

Page 28: Fundamentos de Android

M.Sc. Márcio Palheta 28/96

O que foi gerado?

● manifests: pasta de arquivo de configuração

– AndroidManifest.xml: arquivo de configuração

● Java: pasta onde são armazenados os arquivos .java criados em nossa App

– ProfessorForm: classe de controle do formulário de dados do professor

Page 29: Fundamentos de Android

M.Sc. Márcio Palheta 29/96

A classe ProfessorForm.java

Page 30: Fundamentos de Android

M.Sc. Márcio Palheta 30/96

A classe ProfessorForm.javaClasse filha de

ActionBarActivity

Page 31: Fundamentos de Android

M.Sc. Márcio Palheta 31/96

A classe ProfessorForm.javaMétodo inicial

Page 32: Fundamentos de Android

M.Sc. Márcio Palheta 32/96

A classe ProfessorForm.javaMétodo inicial

Método que carregao menu principal

Page 33: Fundamentos de Android

M.Sc. Márcio Palheta 33/96

A classe ProfessorForm.javaMétodo inicial

Método que carregao menu principal

Método que devolveo click no menu

Page 34: Fundamentos de Android

M.Sc. Márcio Palheta 34/96

O que foi gerado?

● res: pasta onde ficam os recursos utilizados pelas Apps

● res/drawable: pasta de imagens da nossa App

● res/layout: telas da App

– professorformlayout.xml tela para edição de dados do professor

● res/menu: menus da App

– professorformmenu.xml menu da tela de dados

Page 35: Fundamentos de Android

M.Sc. Márcio Palheta 35/96

Tela professorformlayout.xml

Page 36: Fundamentos de Android

M.Sc. Márcio Palheta 36/96

Tela professorformlayout.xmlComponentede organização

da tela

Page 37: Fundamentos de Android

M.Sc. Márcio Palheta 37/96

Tela professorformlayout.xmlComponentede organização

da tela Atributos deAltura e Largura

obrigatórios

Page 38: Fundamentos de Android

M.Sc. Márcio Palheta 38/96

Tela professorformlayout.xmlComponentede organização

da tela Atributos deAltura e Largura

obrigatórios

Componente deTexto

Page 39: Fundamentos de Android

M.Sc. Márcio Palheta 39/96

O que foi gerado?

● res/mipmap: pasta de ícones da App

– ic_launcher.png: ícone da App. Precisamos de um ícone para cada resolução

● res/values

– dimens.xml: dimensões de compenentes

– strings.xml: internacionalização

– styles.xml: configuração de estilo da App

Page 40: Fundamentos de Android

M.Sc. Márcio Palheta 40/96

A pasta RES e os Qualifiers

● RES/VALUES/ pasta que utiliza qualifiers para facilitar a internacionalização da aplicação

● O programador pode criar uma pasta values para cada idioma que deseja suportar.

● Para isso, usamos no nome da pasta qualificadores que indicam o idioma e o país

● O Android carrega automaticamente a pasta mais adequada às configurações do DEVICE.

– values: pasta padrão

– values-pt-rBR: português Brasil

– values-en-rUS: inglês Estados Unidos

Page 41: Fundamentos de Android

M.Sc. Márcio Palheta 41/96

O Arquivo res/values/strings.xml

● O Android já tem a preocupação nativa com a Internacionalização (I18N) das Apps.

● O arquivo string.xml segue o padrão CHAVE e VALOR

Page 42: Fundamentos de Android

M.Sc. Márcio Palheta 42/96

O Arquivo res/values/strings.xml

● O Android já tem a preocupação nativa com a Internacionalização (I18N) das Apps.

● O arquivo string.xml segue o padrão CHAVE e VALOR

Chave usada na view

Page 43: Fundamentos de Android

M.Sc. Márcio Palheta 43/96

O Arquivo res/values/strings.xml

● O Android já tem a preocupação nativa com a Internacionalização (I18N) das Apps.

● O arquivo string.xml segue o padrão CHAVE e VALOR

Chave usada na view

Valor a serexibido na view

Page 44: Fundamentos de Android

M.Sc. Márcio Palheta 44/96

A pasta RES e os Qualifiers

● RES/DRAWABLE/ pasta que armazenas imagens da app.

● Usa qualifiers para definir a resolução a ser utilizada:

– res/drawable-ldpi: dispositivos com baixa resolução(muito raros)

– res/drawable-mdpi: dispositivos com resolução média(raros)

– res/drawable-hdpi: alta resolução(maioria)

– res/drawable-tvdpi: televisões● RES/RAW/ armazena arquivos de mídia, como mp3 ou

vídeos

Page 45: Fundamentos de Android

M.Sc. Márcio Palheta

45/96

Atualização do Android SDK

● É uma boa prática manter o Android Studio atualizado

● Na barra de menu do sistema, selecione o Android SDK Manager

Page 46: Fundamentos de Android

M.Sc. Márcio Palheta

46/96

Atualização do Android SDK

● É uma boa prática manter o Android Studio atualizado

● Na barra de menu do sistema, selecione o Android SDK Manager

Dados da Android SDK Manager

Page 47: Fundamentos de Android

M.Sc. Márcio Palheta

47/96

Atualização do SDK

Atualizações pendentes

Page 48: Fundamentos de Android

M.Sc. Márcio Palheta

48/96

Aceite da licença de instalaçãoSelecione a licença

Page 49: Fundamentos de Android

M.Sc. Márcio Palheta

49/96

Aceite da licença de instalação

Aceite a licença

Selecione a licença

Page 50: Fundamentos de Android

M.Sc. Márcio Palheta

50/96

Ao final da atualização

Os botões de Instalação e Delete estarão desativados

Page 51: Fundamentos de Android

M.Sc. Márcio Palheta

51/96

Execução no Emulador Nativo

● Para testarmos como está ficando a nossa app, podemos utilizar os devices ou emuladores, clicando em RUN

Início da execução da App

Page 52: Fundamentos de Android

M.Sc. Márcio Palheta

52/96

Seleção do dispositivo para execução

Page 53: Fundamentos de Android

M.Sc. Márcio Palheta

53/96

Seleção do dispositivo para execuçãoExecutar a App emum DEVICE conectado

à porta USB

Page 54: Fundamentos de Android

M.Sc. Márcio Palheta

54/96

Seleção do dispositivo para execução

Executar a App emum EMULADOR

Page 55: Fundamentos de Android

M.Sc. Márcio Palheta

55/96

Execução da App no emulador nativo

Page 56: Fundamentos de Android

M.Sc. Márcio Palheta

56/96

Pensando em performance

● Os emuladores nativos do Android Studio, assim como os do Eclipse, são pesados e exigem um certo poder de processamento das máquinas, podendo causar lentidão no processo de testes da App.

● A solução mais rápida é fazer o deploy e testes direto em um device real.

● Contudo, uma aplicação móvel pode rodar em dispositivos com tamanhos e resoluções de telas diversos. Nem sempre temos esse leque de dispositivos à nossa disposição, para testar nossas apps.

● O Genymotion é um emulador com performance melhor que a dos nativos e tem ganho visibilidade no mercado

Page 57: Fundamentos de Android

M.Sc. Márcio Palheta

57/96

Instalação do Genymotion

● O Genymotion precisa de uma máquina virtual, para fazer a emulação de devices

● Baixe e instale a VirtualBox:

https://www.virtualbox.org/wiki/Downloads

Page 58: Fundamentos de Android

M.Sc. Márcio Palheta

58/96

Instalação do Genymotion

● Crie uma conta em: https://www.genymotion.com/

● Baixe e instale: https://www.genymotion.com/#!/product

Page 59: Fundamentos de Android

M.Sc. Márcio Palheta

59/96

Execute o Genymotion

Vamos adicionar umNovo EMULADOR

Page 60: Fundamentos de Android

M.Sc. Márcio Palheta

60/96

Escolha o novo emulador

Page 61: Fundamentos de Android

M.Sc. Márcio Palheta

61/96

Escolha o novo emulador

Vamos adicionar umNovo EMULADOR

Page 62: Fundamentos de Android

M.Sc. Márcio Palheta

62/96

Nome do Virtual Device

Page 63: Fundamentos de Android

M.Sc. Márcio Palheta

63/96

Nome do Virtual Device

Confirme o nome doNovo EMULADOR

Page 64: Fundamentos de Android

M.Sc. Márcio Palheta

64/96

Tela de progresso

Page 65: Fundamentos de Android

M.Sc. Márcio Palheta

65/96

Download concluído

Clique em Finish

Page 66: Fundamentos de Android

M.Sc. Márcio Palheta

66/96

Inicialização do Virtual Device

Page 67: Fundamentos de Android

M.Sc. Márcio Palheta

67/96

Inicialização do Virtual Device

Selecione oEMULADOR

Page 68: Fundamentos de Android

M.Sc. Márcio Palheta

68/96

Inicialização do Virtual Device

Selecione oEMULADOR

Inicie oEMULADOR

Page 69: Fundamentos de Android

M.Sc. Márcio Palheta

69/96

Inicialização do Virtual Device

Page 70: Fundamentos de Android

M.Sc. Márcio Palheta

70/96

Genymotion no Android Studio

● Vá ao menu Preferences / Plugins - "Browse Repositories”

Page 71: Fundamentos de Android

M.Sc. Márcio Palheta

71/96

Instalação do plugin

● Pesquise por “genymotion”, selecione e instale o plugin

Page 72: Fundamentos de Android

M.Sc. Márcio Palheta

72/96

Configure o path do GenymotionInicie o

Genymotion

Page 73: Fundamentos de Android

M.Sc. Márcio Palheta

73/96

Configure o path do Genymotion

Informe o local de instalação do Genymotion

Page 74: Fundamentos de Android

M.Sc. Márcio Palheta

74/96

Execute o Genymotion

Escolha e inicieo emulador

Page 75: Fundamentos de Android

M.Sc. Márcio Palheta

75/96

Execute o Genymotion

Andamento dainicialização

Page 76: Fundamentos de Android

M.Sc. Márcio Palheta

76/96

Rode a aplicação no Genymotion

Page 77: Fundamentos de Android

M.Sc. Márcio Palheta

77/96

Aplicação no Genymotion

Page 78: Fundamentos de Android

M.Sc. Márcio Palheta 78/96

Fundamentos de Android

Código fonteJAVA (.java)

Compilador(javac)

BytecodeJAVA (.class)

Empacota(.jar)

JAVAVM

PROJETOS JAVA

Page 79: Fundamentos de Android

M.Sc. Márcio Palheta 79/96

Fundamentos de Android

Código fonteJAVA (.java)

Compilador(javac)

BytecodeJAVA (.class)

Empacota(.jar)

JAVAVM

PROJETOS JAVA

Código fonteJAVA (.java)

Compilador(javac)

BytecodeJAVA (.class)

Empacota(.dex)

DALVIKVM

PROJETOS ANDROID

Page 80: Fundamentos de Android

M.Sc. Márcio Palheta 80/96

Fundamentos de Android - Estrutura

Page 81: Fundamentos de Android

M.Sc. Márcio Palheta 81/96

Ciclo de vida - Activity

Page 82: Fundamentos de Android

M.Sc. Márcio Palheta 82/96

Ciclo de vida - ActivityChamado quando a Appé criada. Usado para

criação da view e acessoa componentes.

Page 83: Fundamentos de Android

M.Sc. Márcio Palheta 83/96

Ciclo de vida - ActivityChamado quando a Appé criada. Usado para

criação da view e acessoa componentes.

Chamado antes da App ficar Visível na tela. Se der tudo certo, chama onResume(), senão,

onStop().

Page 84: Fundamentos de Android

M.Sc. Márcio Palheta 84/96

Ciclo de vida - ActivityChamado quando a Appé criada. Usado para

criação da view e acessoa componentes.

Chamado antes da App ficar Visível na tela. Se der tudo certo, chama onResume(), senão,

onStop().

Chamado quando a App está em 1o plano, ondeocorre interação com o

usuário.

Page 85: Fundamentos de Android

M.Sc. Márcio Palheta 85/96

Ciclo de vida - Activity

Ocorre quando o Android chama outra atividade.

A nossa App perde o direito à tela.

Page 86: Fundamentos de Android

M.Sc. Márcio Palheta 86/96

Ciclo de vida - Activity

Ocorre quando o Android chama outra atividade.

A nossa App perde o direito à tela.

Ocorre quando a Activity está a muito

tempo fora da tela

Page 87: Fundamentos de Android

M.Sc. Márcio Palheta 87/96

Ciclo de vida - Activity

Ocorre quando o Android chama outra atividade.

A nossa App perde o direito à tela.

Última chance da Appexecutar algo. Ocorre

porque o Android precisade recursos, ou usuário

finalizou a App

Ocorre quando a Activity está a muito

tempo fora da tela

Page 88: Fundamentos de Android

M.Sc. Márcio Palheta 88/96

Exercício 02: Teste de eventos

● Vamos alterar nossa classe OlaMundoActivity para incluir mensagens de log, lançadas a cada evento do ciclo de vida da Activity

● Que tal usarmos o famoso sysout ? Nem pensar. :-)

● Vamos usar o LogCat

● Para isso, basta usarmos o comando:

– Log.i(“GrupoDeMensagens”, “Mensagem”)● Inclua mensagens em todos os métodos de eventos,

conforme exemplo a seguir

Page 89: Fundamentos de Android

M.Sc. Márcio Palheta 89/96

Exercício 02: Teste de eventos

Page 90: Fundamentos de Android

M.Sc. Márcio Palheta 90/96

Exercício 02: Teste de eventos

Atualização do método onCreate()

Page 91: Fundamentos de Android

M.Sc. Márcio Palheta 91/96

Exercício 02: Teste de eventos

Atualização do método onCreate()

Novos métodospara log de eventos

Page 92: Fundamentos de Android

M.Sc. Márcio Palheta 92/96

Exercício 02: resultado esperado

● Execute a App e veja as mensagens de log no LOGCAT

Page 93: Fundamentos de Android

M.Sc. Márcio Palheta 93/96

Exercício 02: resultado esperado

● Execute a App e veja as mensagens de log no LOGCAT

Page 94: Fundamentos de Android

M.Sc. Márcio Palheta 94/96

O que vem a seguir?

● Definições do projeto Agenda Escolar

● Tela de cadastro de professores

● Entendendo a herança entre Activity e ActionBarActivity

● Organização de componentes com LinearLayout

● Exibição de imagens com ImageView

● Textos com TextView

● Campos de texto com EditText

● Botões e eventos de click com Button

● Giro da tela e o armazenamento de estados

Page 95: Fundamentos de Android

M.Sc. Márcio Palheta

95/96

Referências

● d.android.com

● http://developer.android.com/guide/topics/ui/actionbar.html

● LECHETA, Ricardo. Google Android, 3a edição, Novatec, São Paulo, 2013

● Código fonte completo: https://github.com/marciopalheta/cursosandroid

Page 96: Fundamentos de Android

Capítulo 1: Introdução ao Android