49
Desenvolvimento Android Aline Borges [email protected]

Android Destin

Embed Size (px)

Citation preview

Desenvolvimento Android

Aline Borges

[email protected]

Destin

• Baixe na Google Play ;)

Slides

• Esta apresentação está disponível em:

bit.ly/android_2014

Trechos de códigos serão disponíveis em:

bit.ly/semana_eletronica

Objetivo

• App de Destinos de Viagem

• Lista de destinos de viagens

• Ao clicar em um item, tela com mais detalhes

Conteúdo

• Importando bibliotecas úteis no Gradle

• ListView com Adapter personalizado

• Download e parse de JSON de um

WebService

Revisão…

• TextView txtTitulo = (TextView) findViewById(R.id.txtTitulo);

• Activity

• ListView

Baixar o App Base

• Baixar o código através do link:

• github.com/alinekborges/DestinBase

Importando o código exemplo

• File > Import Project

• Tempo curto -> Algumas partes do código

estão prontas

• Imagine caixas mágicas que já fazem o que

você quer

Rodando o aplicativo

• Rodar o app em um

AVD

• Rodar em um

dispositivo Android

via USB Debug

Importando Bibliotecas Úteis

• Support

• GSON

• Picasso

build.Gradle

• compile 'com.squareup.picasso:picasso:2.4.0'

• compile 'com.android.support:appcompat-v7:21.0.0'

• compile 'com.google.code.gson:gson:2.3'

Classe de Modelo

• Alt+Insert > Getter and Setter > todos

ListView personalizado

A maioria dos apps tem uma lista!

Ela só não parece com uma lista

Item layout

• Layout > New > layout resource file

• Nome: item_list

Item layout

• RelativeLayout

• Height = 10dp

• Background = @color/accent

• Large Text

• Id = txtNome

• Medium Text

• Id = txtRegiao

• Small Text

• Id = txtPais

• ImageView

• Id = imageView

• Height = 120dp

• ScaleType = centerCrop

• Src = @drawable/destination_01

Main Activity

• Layout > Delete o textView

• Adicione um ListView

• Botão direito

• > Preview List Content > Choose Item Layout > item_list

Main Activity – Acessando o ListView

• Alt + Enter para importar classes

Main Activity – Acessando o ListView

Adapter personalizado

• Template para o Adapter

• Pacote adapter

• Responsável por interpretar cada item da

lista em um item personalizado

O que vai ser impresso?

• ArrayList<Destination>• Substituir no Adapter “Object” por “Destination”

Inflate View

Sample values

• Valores de teste

• Pacote sample > SampleValues

• Retorna uma lista de Destinations

Ligando o Adapter ao ListView

• Rode o aplicativo

• O que está acontecendo?

• O que falta?

• O aplicativo funciona!

• Vemos uma lista com os items que fizemos

antes

• Precisamos preencher os campos com as

informações corretas

• Isso é feito no adapter!

ViewHolder

ViewHolder

• Inicializando o ViewHolder

Adapter

• Imprimindo as informações de destino

Conexão à internet!

• AndroidManifest.xml

Picasso

• Baixa imagem de um link de modo

assíncrono e coloca em um ImageView

• E ainda coloca uma imagem no lugar enquanto

está carregando

• Faz todo o trabalho por você ;)

ListView Header

• Antes de colocar o adapter!

OnItemClickListener

Navigation Class

• Criada para facilitar!

• Animação de transição entre activities

• Passagem de parametros complexos

Sample App

está pronto!

• Como deixá-lo mais útil?

Web Service - JSON

• Entre no site e adicione seu próprio destino

de viagem!

• Seja criativo, coloque destinos diferentes

do comum

• http://destino.herokuapp.com/destinos/new

JSON

• [

• {

• "id": 1,

• "image_url": “http://caminhodaimagen/imagem.jpg",

• "nome": "Loch Ard Gorge",

• "regiao": "Great Ocean Road",

• "pais": "Austrália",

• "curiosidade": “Texto da curiosidade aqui",

• "url":

"http://destino.herokuapp.com/destinos/1.json"

• }

• ]

Baixar de forma asíncrona

• Baixar informações da internet pode ser

uma operação demorada!

• Se a thread principal fica esperando, todo o

app fica travado até a informação ser

baixada!

AsyncTask

• doInBackground

• onPostExecute

Download Destinations

GSON

• Transforma automaticamente o JSON em

um objeto (ou lista de objetos) do modelo

criado

• O modelo deve ter propriedades com o

mesmo nome do campo do JSON

Criando a AsyncTask

• Copie a classe “DownloadTask” para

dentro da Main Activity

Download Information

• Ao invés de puxar as informações da

classe Sample, iniciamos o download do

JSON do WebService

Adapter

• Agora, o adapter só vai ser criado e linkado

à ListView no onPostExecute

Rode o app

• Simples assim

• Agora, ao invés de puxar as informações

de forma estática, estamos conectados à

internet!

Desenvolvendo um aplicativo

• Não reinvente a roda!

• Reaproveite ao máximo códigos e bibliotecas

prontas na internet, assim como padrões do

Android. Vai poupar muito tempo

• Com esses conhecimentos, já é possível

criar vários aplicativos, use sua

imaginação!

Código Destin Completo

• github.com/alinekborges/AndroidDestin

Obrigada!

• Aline K Borges

[email protected]