Upload
erich-egert
View
5.475
Download
0
Tags:
Embed Size (px)
DESCRIPTION
Palestra do Conexão Java 2012 relativa a criação de uma App Mobile.
Citation preview
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