Conexao Java: Criando uma App Android

Post on 11-Jun-2015

5,475 views 0 download

Tags:

description

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

transcript

Monday, May 28, 12

Erich Egert

encontre-me:@erichegt

github.com/erichegt

Instrutor e desenvolvedor pela Caelum

Monday, May 28, 12

Erissssshhhhhh

Monday, May 28, 12

Monday, May 28, 12

Criando uma app

Monday, May 28, 12

Por quêAndroid?

Monday, May 28, 12

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

Monday, May 28, 12

Monday, May 28, 12

Razões do sucesso?

Monday, May 28, 12

Monday, May 28, 12

Monday, May 28, 12

Monday, May 28, 12

ADT

+

Monday, May 28, 12

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

//...}

Monday, May 28, 12

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

//...}

Jar

JVMMonday, May 28, 12

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

//...}

Jar

JVM

APK

DalvikMonday, May 28, 12

Váriosdispositivos

Monday, May 28, 12

Váriosdispositivos

APKSó pode

haver um!

Único

Monday, May 28, 12

AsyncTask

ExpandableListView

Adapter

LayoutInflater

LocationManager

MapActivity

Monday, May 28, 12

Monday, May 28, 12

Vamos começar devagar...

Monday, May 28, 12

Emulador!!

Monday, May 28, 12

Olá Mundo!

Monday, May 28, 12

Hands on!

Monday, May 28, 12

Entendendo...

AndroidManifest.xml

main.xmlOlaMundoActivity?

Monday, May 28, 12

Estrutura doProjeto

Monday, May 28, 12

drawable

res

layout

valuesMonday, May 28, 12

drawable

res

layout

valuesMonday, May 28, 12

drawable

res

layout

valuesMonday, May 28, 12

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

Monday, May 28, 12

wrap_content fill_parent

Tamanho?

Monday, May 28, 12

Manipulandoa tela

Monday, May 28, 12

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

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

findViewById( )

onCreate( )

Activity XML

Monday, May 28, 12

findViewById( )

onCreate( )

Activity XML

Monday, May 28, 12

Hands on!

Monday, May 28, 12

Listagem?

Monday, May 28, 12

ListView

Monday, May 28, 12

Como?

List<PontoDeOnibus>

Monday, May 28, 12

Adapter

Objeto View

Monday, May 28, 12

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

Activity

layout

dados

List<PontoDeOnibus>

Monday, May 28, 12

layoutlinha.xml

Monday, May 28, 12

Hands on!

Monday, May 28, 12

O visual é importante!

Monday, May 28, 12

Hands on!

Monday, May 28, 12

Tudo espalhado?

Monday, May 28, 12

styles.xml

Monday, May 28, 12

Hands on!

Monday, May 28, 12

E se...

Monday, May 28, 12

Monday, May 28, 12

Tem como?!

Monday, May 28, 12

SIM!!!Monday, May 28, 12

ApplicationResources

Monday, May 28, 12

Hands on!

Monday, May 28, 12

Monday, May 28, 12

Monday, May 28, 12

JSON

Monday, May 28, 12

String json = //...

Monday, May 28, 12

INTERNET

Monday, May 28, 12

INTERNET

Monday, May 28, 12

AndroidManifest.xml

INTERNET

Monday, May 28, 12

AndroidManifest.xml

INTERNET

Monday, May 28, 12

A reposta do server?

Monday, May 28, 12

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

JSON

????

objetoÔnibus

Monday, May 28, 12

Quem poderá nos ajudar?

Monday, May 28, 12

Bibliotecas Marotas!Mark Murphy - The Commons Guy

Monday, May 28, 12

JSON

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

//...}

objetoÔnibus

Monday, May 28, 12

JSON

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

//...}

objetoÔnibus

GSON

Monday, May 28, 12

gson.jar

libs

Monday, May 28, 12

String json = //...

Monday, May 28, 12

String json = //...

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

Monday, May 28, 12

String json = //...

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

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

Monday, May 28, 12

Hands on!

Monday, May 28, 12

Próximo desafio?

Monday, May 28, 12

Mapa?!?

Monday, May 28, 12

Tem como?!?

Monday, May 28, 12

MapActivity

Monday, May 28, 12

ItemizedOverlay

PontoDeOnibus OverlayItem

Coordenada GeoPoint

Monday, May 28, 12

Onde fazer a conversão?

Coordenada GeoPoint

Monday, May 28, 12

Utils?!

Monday, May 28, 12

Ensinamentos doAniche Skywalker

Monday, May 28, 12

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

Vamos testar??

Monday, May 28, 12

Hands on!

Monday, May 28, 12

instale!

confira o código fonte!

github/caelum/onibus-android

Monday, May 28, 12

instale!

confira o código fonte!

github/caelum/onibus-android

github/caelum/onibus-ios

Também na versão

Monday, May 28, 12

OBRIGADO!

@erichegtgithub.com/erichegt

Monday, May 28, 12

Activity Activity

Monday, May 28, 12

Activity Activity

Monday, May 28, 12

INTENT!

Activity Activity

Monday, May 28, 12