Your SlideShare is downloading. ×
0
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Introdução ao Android (minicurso 4h)

1,344

Published on

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

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,344
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
105
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Introdução ao Android Minicurso, 4h Rodrigo Rocha Gomes e Souza 11 de março de 2013 X SIECOMP, UEFS
  • 2. Apresentação
  • 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. 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. ConteúdoAmbiente de desenvolvimento (ADT)Alô mundoEstrutura de um appCiclo de vidaMúltiplas telasSalvando e lendo preferênciasListView
  • 6. MétodoUm pequeno app para cada conceitoAo final, um app completo para anotar suaspalestras favoritas
  • 7. HorárioDe 14h a 18hPausa de 15 a 20 min no meio do minicurso
  • 8. Android
  • 9. DispositivosSmartphones: 240x320, 320x480, 480x800...Tablets: 480x800, 600x1024, 800x1280...TVs, consoles, computador pessoal...
  • 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. Empacotamento
  • 12. Versões1.0: muito antiga2.0: smartphones3.0: tablets4.0: smartphones e tablets
  • 13. Versões 4.0 4.1, 4.2 2.2 2.3http://developer.android.com/about/dashboards/index.html
  • 14. Ambiente dedesenvolvimento
  • 15. http://developer.android.com/tools/sdk/eclipse-adt.html
  • 16. Emulador / Android Virtual Device (AVD)
  • 17. PráticaAbrir o ambiente de desenvolvimentoCriar e executar uma AVDAbrir o SDK Manager
  • 18. PráticaAbrir o DDMS. Aba Emulator Control. Simule uma ligação telefônica
  • 19. Alô, Mundo!
  • 20. Novo projeto
  • 21. Novo projeto
  • 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. 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. 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. 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. 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. 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. PráticaSubstitua, no arquivo strings.xml, “Hello world!” por“Alo mundo!”Execute o app.
  • 29. Interação
  • 30. Adicionar um botão
  • 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. 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. 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. 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. O que fazer quando clicar no botão?1. Exibir algo na tela2. Exibir algo no log3. Mudar o texto do TextView
  • 36. Toast (mensagem na tela) Toast.makeText(this, "Hello World", Toast.LENGTH_SHORT).show();
  • 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. 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. 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. Ciclo de Vida de uma Activity
  • 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. 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. PráticaRotacione o dispositivo (Ctrl+F11). Quais métodossão chamados?
  • 44. Preferências
  • 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. 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. PráticaFaça o app guardar o textoCarregue no onCreate, salve no onDestroyBoa prática: use atributos static final para aschaves
  • 48. Pausa
  • 49. Intents
  • 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. 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. 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. 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. 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. 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. Prática
  • 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. ListView
  • 59. ListView: funcionamento ListView ArrayAdapter String
  • 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. ListViewListView listView = (ListView) findViewById(R.id.mylist);listView.setAdapter(adapter);
  • 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. ListView: interaçãolistView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view,int position, long id) { // ... }});
  • 64. PráticaSistema para guardar palestras e cursos do SIECOMP.

×