conexao java: criando uma app android

94
Monday, May 28, 12

Upload: erich-egert

Post on 11-Jun-2015

5.475 views

Category:

Technology


0 download

DESCRIPTION

Palestra do Conexão Java 2012 relativa a criação de uma App Mobile.

TRANSCRIPT

Page 1: Conexao Java: Criando uma App Android

Monday, May 28, 12

Page 2: Conexao Java: Criando uma App Android

Erich Egert

encontre-me:@erichegt

github.com/erichegt

Instrutor e desenvolvedor pela Caelum

Monday, May 28, 12

Page 3: Conexao Java: Criando uma App Android

Erissssshhhhhh

Monday, May 28, 12

Page 4: Conexao Java: Criando uma App Android

Monday, May 28, 12

Page 5: Conexao Java: Criando uma App Android

Criando uma app

Monday, May 28, 12

Page 6: Conexao Java: Criando uma App Android

Por quêAndroid?

Monday, May 28, 12

Page 7: Conexao Java: Criando uma App Android

0

37.5

75

112.5

150

2006 2007 2008 2009 2010 2011

Palm/webOS Symbian Windows MobileWindows Phone 7 RIM IOSAndroid

Monday, May 28, 12

Page 8: Conexao Java: Criando uma App Android

Monday, May 28, 12

Page 9: Conexao Java: Criando uma App Android

Monday, May 28, 12

Page 10: Conexao Java: Criando uma App Android

Razões do sucesso?

Monday, May 28, 12

Page 11: Conexao Java: Criando uma App Android

Monday, May 28, 12

Page 12: Conexao Java: Criando uma App Android

Monday, May 28, 12

Page 13: Conexao Java: Criando uma App Android

Monday, May 28, 12

Page 14: Conexao Java: Criando uma App Android

ADT

+

Monday, May 28, 12

Page 15: Conexao Java: Criando uma App Android

public class Onibus { private String nome; private String linha;

//...}

Monday, May 28, 12

Page 16: Conexao Java: Criando uma App Android

public class Onibus { private String nome; private String linha;

//...}

Jar

JVMMonday, May 28, 12

Page 17: Conexao Java: Criando uma App Android

public class Onibus { private String nome; private String linha;

//...}

Jar

JVM

APK

DalvikMonday, May 28, 12

Page 18: Conexao Java: Criando uma App Android

Váriosdispositivos

Monday, May 28, 12

Page 19: Conexao Java: Criando uma App Android

Váriosdispositivos

APKSó pode

haver um!

Único

Monday, May 28, 12

Page 20: Conexao Java: Criando uma App Android

AsyncTask

ExpandableListView

Adapter

LayoutInflater

LocationManager

MapActivity

Monday, May 28, 12

Page 21: Conexao Java: Criando uma App Android

Monday, May 28, 12

Page 22: Conexao Java: Criando uma App Android

Vamos começar devagar...

Monday, May 28, 12

Page 23: Conexao Java: Criando uma App Android

Emulador!!

Monday, May 28, 12

Page 24: Conexao Java: Criando uma App Android

Olá Mundo!

Monday, May 28, 12

Page 25: Conexao Java: Criando uma App Android

Hands on!

Monday, May 28, 12

Page 26: Conexao Java: Criando uma App Android

Entendendo...

AndroidManifest.xml

main.xmlOlaMundoActivity?

Monday, May 28, 12

Page 27: Conexao Java: Criando uma App Android

Estrutura doProjeto

Monday, May 28, 12

Page 28: Conexao Java: Criando uma App Android

drawable

res

layout

valuesMonday, May 28, 12

Page 29: Conexao Java: Criando uma App Android

drawable

res

layout

valuesMonday, May 28, 12

Page 30: Conexao Java: Criando uma App Android

drawable

res

layout

valuesMonday, May 28, 12

Page 31: Conexao Java: Criando uma App Android

drawable

res

layout

values

<resources>...

<string name="cor">COR:</string> <string name="modelo">MODELO:</string> <string name="opcionais">OPCIONAIS:</string> <string name="salvar">SALVAR</string></resources>

Monday, May 28, 12

Page 32: Conexao Java: Criando uma App Android

Monday, May 28, 12

Page 33: Conexao Java: Criando uma App Android

wrap_content fill_parent

Tamanho?

Monday, May 28, 12

Page 34: Conexao Java: Criando uma App Android

Manipulandoa tela

Monday, May 28, 12

Page 35: Conexao Java: Criando uma App Android

comportamento

public class OnibusActivity extends Activity {

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);

//muitas coisas legais aqui! }}

Activity

Monday, May 28, 12

Page 36: Conexao Java: Criando uma App Android

comportamento

public class OnibusActivity extends Activity {

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);

//muitas coisas legais aqui! }}

Activity aparência

XML

Monday, May 28, 12

Page 37: Conexao Java: Criando uma App Android

findViewById( )

onCreate( )

Activity XML

Monday, May 28, 12

Page 38: Conexao Java: Criando uma App Android

findViewById( )

onCreate( )

Activity XML

Monday, May 28, 12

Page 39: Conexao Java: Criando uma App Android

Hands on!

Monday, May 28, 12

Page 40: Conexao Java: Criando uma App Android

Listagem?

Monday, May 28, 12

Page 41: Conexao Java: Criando uma App Android

ListView

Monday, May 28, 12

Page 42: Conexao Java: Criando uma App Android

Como?

List<PontoDeOnibus>

Monday, May 28, 12

Page 43: Conexao Java: Criando uma App Android

Adapter

Objeto View

Monday, May 28, 12

Page 44: Conexao Java: Criando uma App Android

new ArrayAdapter<PontoDeOnibus>(context, layout, lista);

Activity

layout

dados

List<PontoDeOnibus>

Monday, May 28, 12

Page 45: Conexao Java: Criando uma App Android

layoutlinha.xml

Monday, May 28, 12

Page 46: Conexao Java: Criando uma App Android

Hands on!

Monday, May 28, 12

Page 47: Conexao Java: Criando uma App Android

O visual é importante!

Monday, May 28, 12

Page 48: Conexao Java: Criando uma App Android

Hands on!

Monday, May 28, 12

Page 49: Conexao Java: Criando uma App Android

Tudo espalhado?

Monday, May 28, 12

Page 50: Conexao Java: Criando uma App Android

styles.xml

Monday, May 28, 12

Page 51: Conexao Java: Criando uma App Android

Hands on!

Monday, May 28, 12

Page 52: Conexao Java: Criando uma App Android

E se...

Monday, May 28, 12

Page 53: Conexao Java: Criando uma App Android

Monday, May 28, 12

Page 54: Conexao Java: Criando uma App Android

Tem como?!

Monday, May 28, 12

Page 55: Conexao Java: Criando uma App Android

SIM!!!Monday, May 28, 12

Page 56: Conexao Java: Criando uma App Android

ApplicationResources

Monday, May 28, 12

Page 57: Conexao Java: Criando uma App Android

Hands on!

Monday, May 28, 12

Page 58: Conexao Java: Criando uma App Android

Monday, May 28, 12

Page 59: Conexao Java: Criando uma App Android

Monday, May 28, 12

Page 60: Conexao Java: Criando uma App Android

JSON

Monday, May 28, 12

Page 61: Conexao Java: Criando uma App Android

String json = //...

Monday, May 28, 12

Page 62: Conexao Java: Criando uma App Android

INTERNET

Monday, May 28, 12

Page 63: Conexao Java: Criando uma App Android

INTERNET

Monday, May 28, 12

Page 64: Conexao Java: Criando uma App Android

AndroidManifest.xml

INTERNET

Monday, May 28, 12

Page 65: Conexao Java: Criando uma App Android

AndroidManifest.xml

INTERNET

Monday, May 28, 12

Page 66: Conexao Java: Criando uma App Android

A reposta do server?

Monday, May 28, 12

Page 67: Conexao Java: Criando uma App Android

JSON!!{ "linha": "1018-10", "nome": "Vila Rosa - Metrô Santana", "pontos" : [

{ "nome": "920016054", "descricao": "R. Dr. Neto De Araujo, 311", "coordenada": { "latitude": -23.5876, "longitude": -46.6321

} }, { "nome": "920016364", "descricao": "R. Vergueiro, 3039", "coordenada": { "latitude": -23.5875, "longitude": -46.6336 } } ]}

Monday, May 28, 12

Page 68: Conexao Java: Criando uma App Android

JSON

????

objetoÔnibus

Monday, May 28, 12

Page 69: Conexao Java: Criando uma App Android

Quem poderá nos ajudar?

Monday, May 28, 12

Page 70: Conexao Java: Criando uma App Android

Bibliotecas Marotas!Mark Murphy - The Commons Guy

Monday, May 28, 12

Page 71: Conexao Java: Criando uma App Android

JSON

public class Onibus { private String nome; private String linha; private List<Ponto> pontos;

//...}

objetoÔnibus

Monday, May 28, 12

Page 72: Conexao Java: Criando uma App Android

JSON

public class Onibus { private String nome; private String linha; private List<Ponto> pontos;

//...}

objetoÔnibus

GSON

Monday, May 28, 12

Page 73: Conexao Java: Criando uma App Android

gson.jar

libs

Monday, May 28, 12

Page 74: Conexao Java: Criando uma App Android

String json = //...

Monday, May 28, 12

Page 75: Conexao Java: Criando uma App Android

String json = //...

Gson gson = new GsonBuilder().create();

Monday, May 28, 12

Page 76: Conexao Java: Criando uma App Android

String json = //...

Onibus busao = gson.fromJson(json,Onibus.class);

Gson gson = new GsonBuilder().create();

Monday, May 28, 12

Page 77: Conexao Java: Criando uma App Android

Hands on!

Monday, May 28, 12

Page 78: Conexao Java: Criando uma App Android

Próximo desafio?

Monday, May 28, 12

Page 79: Conexao Java: Criando uma App Android

Mapa?!?

Monday, May 28, 12

Page 80: Conexao Java: Criando uma App Android

Tem como?!?

Monday, May 28, 12

Page 81: Conexao Java: Criando uma App Android

MapActivity

Monday, May 28, 12

Page 82: Conexao Java: Criando uma App Android

ItemizedOverlay

PontoDeOnibus OverlayItem

Coordenada GeoPoint

Monday, May 28, 12

Page 83: Conexao Java: Criando uma App Android

Onde fazer a conversão?

Coordenada GeoPoint

Monday, May 28, 12

Page 84: Conexao Java: Criando uma App Android

Utils?!

Monday, May 28, 12

Page 85: Conexao Java: Criando uma App Android

Ensinamentos doAniche Skywalker

Monday, May 28, 12

Page 86: Conexao Java: Criando uma App Android

public class Ponto { //...

public OverlayItem toOverlayItem() { return new OverlayItem( this.localizacao.toGeoPoint(),

"Localização:", this.descricao ); }}

public class Coordenada { private static final double CONVERSION_SCALE = 1E6;

//...

public GeoPoint toGeoPoint() { Double geoLat = this.latitude * CONVERSION_SCALE; Double geoLng = this.longitude * CONVERSION_SCALE; return new GeoPoint(geoLat.intValue(), geoLng.intValue()); }}

Monday, May 28, 12

Page 87: Conexao Java: Criando uma App Android

Vamos testar??

Monday, May 28, 12

Page 88: Conexao Java: Criando uma App Android

Hands on!

Monday, May 28, 12

Page 89: Conexao Java: Criando uma App Android

instale!

confira o código fonte!

github/caelum/onibus-android

Monday, May 28, 12

Page 90: Conexao Java: Criando uma App Android

instale!

confira o código fonte!

github/caelum/onibus-android

github/caelum/onibus-ios

Também na versão

Monday, May 28, 12

Page 91: Conexao Java: Criando uma App Android

OBRIGADO!

@erichegtgithub.com/erichegt

Monday, May 28, 12

Page 92: Conexao Java: Criando uma App Android

Activity Activity

Monday, May 28, 12

Page 93: Conexao Java: Criando uma App Android

Activity Activity

Monday, May 28, 12

Page 94: Conexao Java: Criando uma App Android

INTENT!

Activity Activity

Monday, May 28, 12