Introdução ao Android           Minicurso, 4h    Rodrigo Rocha Gomes e Souza        11 de março de 2013         X SIECOMP,...
Apresentação
VocêsQuem tem um aparelho Android?Quem programa em Java?Quem já programou pra Android, pelo menos umHello World?Quem já pr...
EuDoutorando em Ciência da Computação na UFBAAnalista de TI no CPD-UFBAProfessor estagiário da disciplina “Aplicações para...
ConteúdoAmbiente de desenvolvimento (ADT)Alô mundoEstrutura de um appCiclo de vidaMúltiplas telasSalvando e lendo preferên...
MétodoUm pequeno app para cada conceitoAo final, um app completo para anotar suaspalestras favoritas
HorárioDe 14h a 18hPausa de 15 a 20 min no meio do minicurso
Android
DispositivosSmartphones: 240x320, 320x480, 480x800...Tablets: 480x800, 600x1024, 800x1280...TVs, consoles, computador pess...
Android, o sistema operacionalComprado pela Google em 2005Anunciado em 2007, lançado em 2008Usa o kernel do LinuxRoda uma ...
Empacotamento
Versões1.0: muito antiga2.0: smartphones3.0: tablets4.0: smartphones e tablets
Versões                                             4.0                                                    4.1, 4.2       ...
Ambiente dedesenvolvimento
http://developer.android.com/tools/sdk/eclipse-adt.html
Emulador / Android Virtual Device (AVD)
PráticaAbrir o ambiente de desenvolvimentoCriar e executar uma AVDAbrir o SDK Manager
PráticaAbrir o DDMS. Aba Emulator Control. Simule uma ligação telefônica
Alô, Mundo!
Novo projeto
Novo projeto
Estrutura do appsrc/ - código-fonteres/ - telas, strings, ícone do app...assets/ - outros arquivos usados porseu app (imag...
ActivityEquivale a uma tela.Ao criar um projeto, uma Activity (Main) é criadaCada Activity é definida em dois arquivos...  ...
Layout                                   res/layout/activity_main.xml<RelativeLayout    xmlns:android="http://schemas.andr...
strings.xml                                  res/values/strings.xml<?xml version="1.0" encoding="utf-8"?><resources>    <s...
Código Java                                  src/.../MainActivity.javapublic class MainActivity extends Activity {	   @Ove...
R (arquivo gerado pelo compilador)                                                    gen/R.java   public final class R { ...
PráticaSubstitua, no arquivo strings.xml, “Hello world!” por“Alo mundo!”Execute o app.
Interação
Adicionar um botão
Ids!                                  res/layout/activity_main.xml       <RelativeLayout ... >           <TextView        ...
R (arquivo gerado pelo compilador)                                                  gen/R.java  public final class R {    ...
Clique!                                res/layout/activity_main.xml <RelativeLayout ... >     <TextView         android:id...
Chama método botaoClicado                                  src/.../MainActivity.javapublic class MainActivity extends Acti...
O que fazer quando clicar no botão?1. Exibir algo na tela2. Exibir algo no log3. Mudar o texto do TextView
Toast (mensagem na tela)  Toast.makeText(this, "Hello World", Toast.LENGTH_SHORT).show();
Log (não aparece para o usuário)   Log.i("minhatag", "Minha mensagem")// Métodos de LogLog.v    // VerboseLog.d    // Debu...
Alterar o TextView (usa findViewById)                                   src/.../MainActivity.javapublic class MainActivity ...
PráticaAdicione um campo de texto (EditText)Ao clicar no botão, altere o TextView para o valordo campo de texto (use getTe...
Ciclo de Vida de uma       Activity
Ciclo de vida de uma Activity                ativa                                       parcialmente  onResume           ...
PráticaImplemente os métodos do ciclo de vida de umaactivity para emitir uma mensagem de log paracada umTente fazer com qu...
PráticaRotacione o dispositivo (Ctrl+F11). Quais métodossão chamados?
Preferências
PreferênciasComo salvar dados para que eles possam seracessados da próxima vez que o app sejaexecutado?SharedPreferences é...
Preferências             SharedPreferences prefs = PreferenceManager             	 	 .getDefaultSharedPreferences(this);Sa...
PráticaFaça o app guardar o textoCarregue no onCreate, salve no onDestroyBoa prática: use atributos static final para ascha...
Pausa
Intents
IntentsSão mensagens que seu programa envia para osistema para requisitar funcionalidades de outroscomponentesExemplo: uma...
Abrindo outra Activity                                MainActivity.javaIntent intent = new Intent(this, OutraActivity.clas...
Fechando a Activity                  OutraActivity                  finish();        Quando uma Activity é fechada      (d...
PráticaCrie um projeto.Crie uma nova Activity, chamada OutraActivityNa MainActivity, adicione um botão que, ao serclicado,...
Passando dados de uma Activity para outra                                      MainActivity.javaIntent intent = new Intent...
Retornando dados de uma ActivityIntent intent = new Intent(this, OutraActivity.class);                                    ...
Prática
Intents Implícitos   // Abrir navegadorIntent intent = new Intent(Intent.ACTION_VIEW,    Uri.parse("http://www.google.com/...
ListView
ListView: funcionamento                            ListView             ArrayAdapter  String
ListView<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    ...
ListViewListView listView = (ListView) findViewById(R.id.mylist);listView.setAdapter(adapter);
ArrayAdapterListView listView = (ListView) findViewById(R.id.mylist);String[] values = new String[] { “Ada”, “Basic”, “C++...
ListView: interaçãolistView.setOnItemClickListener(new OnItemClickListener() {	 @Override	 public void onItemClick(Adapter...
PráticaSistema para guardar palestras e cursos do SIECOMP.
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Upcoming SlideShare
Loading in …5
×

Introdução ao Android (minicurso 4h)

1,793 views

Published on

Minicurso ministrado no X SIECOMP, 11 de março de 2013, UEFS

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,793
On SlideShare
0
From Embeds
0
Number of Embeds
86
Actions
Shares
0
Downloads
120
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Introdução ao Android (minicurso 4h)

  1. 1. Introdução ao Android Minicurso, 4h Rodrigo Rocha Gomes e Souza 11 de março de 2013 X SIECOMP, UEFS
  2. 2. Apresentação
  3. 3. VocêsQuem tem um aparelho Android?Quem programa em Java?Quem já programou pra Android, pelo menos umHello World?Quem já programou pra outra plataforma móvel?
  4. 4. EuDoutorando em Ciência da Computação na UFBAAnalista de TI no CPD-UFBAProfessor estagiário da disciplina “Aplicações paraDispositivos Móveis”, na UFBAFundador da RoDen Apps (iOS)
  5. 5. ConteúdoAmbiente de desenvolvimento (ADT)Alô mundoEstrutura de um appCiclo de vidaMúltiplas telasSalvando e lendo preferênciasListView
  6. 6. MétodoUm pequeno app para cada conceitoAo final, um app completo para anotar suaspalestras favoritas
  7. 7. HorárioDe 14h a 18hPausa de 15 a 20 min no meio do minicurso
  8. 8. Android
  9. 9. DispositivosSmartphones: 240x320, 320x480, 480x800...Tablets: 480x800, 600x1024, 800x1280...TVs, consoles, computador pessoal...
  10. 10. Android, o sistema operacionalComprado pela Google em 2005Anunciado em 2007, lançado em 2008Usa o kernel do LinuxRoda uma máquina virtual Java própria: Dalvik VMMuitas bibliotecas Java funcionam sem alteraçõesna Dalvik, mas nem todas
  11. 11. Empacotamento
  12. 12. Versões1.0: muito antiga2.0: smartphones3.0: tablets4.0: smartphones e tablets
  13. 13. Versões 4.0 4.1, 4.2 2.2 2.3http://developer.android.com/about/dashboards/index.html
  14. 14. Ambiente dedesenvolvimento
  15. 15. http://developer.android.com/tools/sdk/eclipse-adt.html
  16. 16. Emulador / Android Virtual Device (AVD)
  17. 17. PráticaAbrir o ambiente de desenvolvimentoCriar e executar uma AVDAbrir o SDK Manager
  18. 18. PráticaAbrir o DDMS. Aba Emulator Control. Simule uma ligação telefônica
  19. 19. Alô, Mundo!
  20. 20. Novo projeto
  21. 21. Novo projeto
  22. 22. Estrutura do appsrc/ - código-fonteres/ - telas, strings, ícone do app...assets/ - outros arquivos usados porseu app (imagem, música, texto...)gen/ - código-fonte geradoautomaticamenteAndroidManifest.xml - configuraçãodo app (nome, versão do Android,telas, permissões...)
  23. 23. ActivityEquivale a uma tela.Ao criar um projeto, uma Activity (Main) é criadaCada Activity é definida em dois arquivos... res/layout/activity_nome.xml (visual) src/.../NomeActivity.java (comportamento)... e é listada no arquivo AndroidManifest.xml
  24. 24. Layout res/layout/activity_main.xml<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="@string/hello_world" /></RelativeLayout>
  25. 25. strings.xml res/values/strings.xml<?xml version="1.0" encoding="utf-8"?><resources> <string name="app_name">Alo Mundo</string> <string name="hello_world">Hello world!</string> <string name="menu_settings">Settings</string></resources> útil para traduzir um app para vários idiomas (um arquivo strings.xml por idioma)
  26. 26. Código Java src/.../MainActivity.javapublic class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); }}
  27. 27. R (arquivo gerado pelo compilador) gen/R.java public final class R { public static final class layout { public static final int activity_main=0x7f030000; } public static final class string { public static final int app_name=0x7f040000; public static final int hello_world=0x7f040001; public static final int menu_settings=0x7f040002; } ... } Cada recurso é identificado por um número. O compilador gera constantes para facilitar o uso de recursos no código-fonte.
  28. 28. PráticaSubstitua, no arquivo strings.xml, “Hello world!” por“Alo mundo!”Execute o app.
  29. 29. Interação
  30. 30. Adicionar um botão
  31. 31. Ids! res/layout/activity_main.xml <RelativeLayout ... > <TextView android:id="@+id/textView1" ... /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView1" android:layout_below="@+id/textView1" android:layout_marginTop="21dp" android:text="Button" /> </RelativeLayout>
  32. 32. R (arquivo gerado pelo compilador) gen/R.java public final class R { public static final class id { public static final int button1=0x7f070001; public static final int menu_settings=0x7f070002; public static final int textView1=0x7f070000; } ... }
  33. 33. Clique! res/layout/activity_main.xml <RelativeLayout ... > <TextView android:id="@+id/textView1" ... /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView1" android:layout_below="@+id/textView1" android:layout_marginTop="21dp" android:text="Button" android:onClick="botaoClicado" /> </RelativeLayout>
  34. 34. Chama método botaoClicado src/.../MainActivity.javapublic class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void botaoClicado(View v) { }}
  35. 35. O que fazer quando clicar no botão?1. Exibir algo na tela2. Exibir algo no log3. Mudar o texto do TextView
  36. 36. Toast (mensagem na tela) Toast.makeText(this, "Hello World", Toast.LENGTH_SHORT).show();
  37. 37. Log (não aparece para o usuário) Log.i("minhatag", "Minha mensagem")// Métodos de LogLog.v // VerboseLog.d // DebugLog.i // InfoLog.w // WarningLog.e // ErrorLog.wtf // What a Terrible Failure
  38. 38. Alterar o TextView (usa findViewById) src/.../MainActivity.javapublic class MainActivity extends Activity { ... public void botaoClicado(View v) { TextView tv = (TextView)findViewById(R.id.textView1); tv.setText("Clique!"); }}
  39. 39. PráticaAdicione um campo de texto (EditText)Ao clicar no botão, altere o TextView para o valordo campo de texto (use getText()).Boa prática: crie um atributo para cada view einicialize todos no onCreate (usando findViewbyId)
  40. 40. Ciclo de Vida de uma Activity
  41. 41. Ciclo de vida de uma Activity ativa parcialmente onResume onPause visível onRestart onStart onStop não visível onCreate onDestroy destruída
  42. 42. PráticaImplemente os métodos do ciclo de vida de umaactivity para emitir uma mensagem de log paracada umTente fazer com que onDestroy seja chamado
  43. 43. PráticaRotacione o dispositivo (Ctrl+F11). Quais métodossão chamados?
  44. 44. Preferências
  45. 45. PreferênciasComo salvar dados para que eles possam seracessados da próxima vez que o app sejaexecutado?SharedPreferences é uma forma conveniente desalvar pequenas quantidades de dados.
  46. 46. Preferências SharedPreferences prefs = PreferenceManager .getDefaultSharedPreferences(this);Salvando Editor editor = prefs.edit(); editor.putString("texto", texto); editor.commit(); SharedPreferences prefs = PreferenceManager .getDefaultSharedPreferences(this);Carregando String texto = prefs.getString("texto", "");
  47. 47. PráticaFaça o app guardar o textoCarregue no onCreate, salve no onDestroyBoa prática: use atributos static final para aschaves
  48. 48. Pausa
  49. 49. Intents
  50. 50. IntentsSão mensagens que seu programa envia para osistema para requisitar funcionalidades de outroscomponentesExemplo: uma Activity envia um Intent pararequisitar ao sistema que outra Activity seja abertaOutro exemplo: uma Activity envia um Intent pararequisitar ao sistema que abra um navegador napágina www.google.com
  51. 51. Abrindo outra Activity MainActivity.javaIntent intent = new Intent(this, OutraActivity.class);startActivity(intent); Pode ser chamado, por exemplo, ao clicar em um botão. A nova Activity é empilhada sobre a atual.
  52. 52. Fechando a Activity OutraActivity finish(); Quando uma Activity é fechada (desempilhada), o sistema mostra a Activity anterior, que estava abaixo da atual. OutraActivity deve se fechar, e não empilhar MainActivity.
  53. 53. PráticaCrie um projeto.Crie uma nova Activity, chamada OutraActivityNa MainActivity, adicione um botão que, ao serclicado, abre OutraActivityNa OutraActivity, adicione um botão que, ao serchamado, feche a Activity
  54. 54. Passando dados de uma Activity para outra MainActivity.javaIntent intent = new Intent(this, OutraActivity.class);intent.putExtra(“pi”, 3.14);startActivity(intent); OutraActivity.java Bundle extras = getIntent().getExtras() if (extras != null) { float x = extra.getFloat(“pi”); } Pode ser chamado no onCreate()
  55. 55. Retornando dados de uma ActivityIntent intent = new Intent(this, OutraActivity.class); MainActivity.javastartActivityForResult(intent, 1234); Intent data = new Intent(); data.putExtra(“pi”, 3.14); OutraActivity.java setResult(RESULT_OK, data); finish();@Overrideprotected void onActivityResult(int requestCode, MainActivity.java int resultCode, Intent data) { if (requestCode == 1234 && resultCode == RESULT_OK) { float pi = data.getFloat(“pi”); }}
  56. 56. Prática
  57. 57. Intents Implícitos // Abrir navegadorIntent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com/"));startActivity(intent);// Enviar mensagem (SMS)Intent intent = new Intent(Intent.ACTION_SEND);intent.setType("text/plain");intent.putExtra(android.content.Intent.EXTRA_TEXT, "Oi!");startActivity(intent);
  58. 58. ListView
  59. 59. ListView: funcionamento ListView ArrayAdapter String
  60. 60. ListView<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" >        <ListView                android:id="@+id/mylist"                android:layout_width="match_parent"                android:layout_height="wrap_content"  >        </ListView></LinearLayout>
  61. 61. ListViewListView listView = (ListView) findViewById(R.id.mylist);listView.setAdapter(adapter);
  62. 62. ArrayAdapterListView listView = (ListView) findViewById(R.id.mylist);String[] values = new String[] { “Ada”, “Basic”, “C++” };ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, // layout de um item values);listView.setAdapter(adapter);
  63. 63. ListView: interaçãolistView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view,int position, long id) { // ... }});
  64. 64. PráticaSistema para guardar palestras e cursos do SIECOMP.

×