[FLISOL] Android Faixa Branca (Iniciando no Android) – 2013

  • 274 views
Uploaded on

Palestra ministrada no FLISOL Campinas 2013

Palestra ministrada no FLISOL Campinas 2013

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
274
On Slideshare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
8
Comments
0
Likes
1

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. Android
 Faixa Branca Douglas Drumond! drumond.douglas@gmail.com eee19.com
  • 2. eu.about() eee19.com
  • 3. eu.about() • Bacharel em Ciência da Computação eee19.com
  • 4. eu.about() • Bacharel em Ciência da Computação • Analista de software no Instituto de Pesquisas Eldorado eee19.com
  • 5. eu.about() • Bacharel em Ciência da Computação • Analista de software no Instituto de Pesquisas Eldorado • Sócio e co-fundador da Y-MAX Consultoria em TI eee19.com
  • 6. eu.about() • Bacharel em Ciência da Computação • Analista de software no Instituto de Pesquisas Eldorado • Sócio e co-fundador da Y-MAX Consultoria em TI • Organizador do GDG Campinas eee19.com
  • 7. @Eldorado Aplicações Framework Bibliotecas Dalvik Linux Kernel eee19.com
  • 8. @Eldorado Aplicações Framework Bibliotecas Linux Kernel Dalvik BP eee19.com
  • 9. Hoje http://www.flickr.com/photos/natalielucier/3619749009/ eee19.com
  • 10. http://www.flickr.com/photos/donkeyhotey/5666071828/ eee19.com
  • 11. Ferramentas eee19.com
  • 12. Pré-requisitos • JDK! • Android SDK eee19.com
  • 13. Sistema Operacional • Linux! • Mac OS X (Intel)! • Windows XP ou superior eee19.com
  • 14. Ferramentas eee19.com
  • 15. Ferramentas eee19.com
  • 16. Ferramentas eee19.com
  • 17. Ferramentas eee19.com
  • 18. Ferramentas eee19.com
  • 19. Ferramentas • Remote debugger • logcat • DDMS eee19.com
  • 20. Ferramentas eee19.com
  • 21. Ferramentas eee19.com
  • 22. Ferramentas eee19.com
  • 23. Ferramentas eee19.com
  • 24. Ferramentas eee19.com
  • 25. Ferramentas eee19.com
  • 26. Ferramentas eee19.com
  • 27. Livre • the definition of open: "mkdir android ; cd android ; repo init -u git:// android.git.kernel.org/platform/manifest.git ; repo sync ; make" http://twitter.com/#!/arubin/status/27808662429 eee19.com
  • 28. Arquitetura eee19.com
  • 29. Arquitetura Linux Kernel eee19.com
  • 30. Arquitetura Bibliotecas Dalvik Linux Kernel eee19.com
  • 31. Arquitetura Framework Bibliotecas Dalvik Linux Kernel eee19.com
  • 32. Arquitetura Aplicações Framework Bibliotecas Dalvik Linux Kernel eee19.com
  • 33. Arquitetura Aplicações Framework Bibliotecas Dalvik Linux Kernel eee19.com
  • 34. Dissecando as Aplicações eee19.com
  • 35. Activity eee19.com
  • 36. Service eee19.com
  • 37. Content Provider eee19.com
  • 38. Intent eee19.com
  • 39. Intent eee19.com
  • 40. Intent eee19.com
  • 41. Intent eee19.com
  • 42. Intent eee19.com
  • 43. Broadcast Receiver • Não possui interface (com usuário)! • Roda em segundo plano! • Reage a mensagens de broadcast! • Exemplo: carga de bateria eee19.com
  • 44. Activity • Interface! • Um objetivo! • Várias por aplicativo! • Pode iniciar outras activities eee19.com
  • 45. Activity • 3 estados: ativa, em pausa e parada! • 3 ciclos de vida! • pode morrer a qualquer momento se não estiver ativa eee19.com
  • 46. Activity eee19.com
  • 47. Activity onCreate() eee19.com
  • 48. Activity onCreate() onStart() eee19.com
  • 49. Activity onCreate() onStart() onResume() eee19.com
  • 50. Activity onCreate() onStart() onResume() em execução eee19.com
  • 51. Activity onCreate() onStart() onResume() em execução onPause() eee19.com
  • 52. Activity onCreate() onStart() onResume() em execução onPause() eee19.com
  • 53. Activity onCreate() onStart() Primeiro plano onResume() em execução onPause() eee19.com
  • 54. Activity onCreate() onStart() Primeiro plano onResume() em execução onPause() onStop() eee19.com
  • 55. Activity onCreate() onStart() Primeiro plano onRestart() onResume() em execução onPause() onStop() eee19.com
  • 56. Activity onCreate() onStart() Primeiro plano onRestart() onResume() em execução onPause() onStop() eee19.com
  • 57. Activity onCreate() Visível onStart() Primeiro plano onRestart() onResume() em execução onPause() onStop() eee19.com
  • 58. Activity onCreate() Visível onStart() Primeiro plano onRestart() onResume() em execução onPause() onStop() onDestroy() eee19.com
  • 59. Activity onCreate() Visível onStart() Primeiro plano onRestart() onResume() em execução onPause() onStop() onDestroy() shutdown eee19.com
  • 60. Activity Ciclo de vida completo onCreate() Visível onStart() Primeiro plano onRestart() onResume() em execução onPause() onStop() onDestroy() shutdown eee19.com
  • 61. Multitarefa eee19.com
  • 62. Multitarefa eee19.com
  • 63. Multitarefa onCreate() eee19.com
  • 64. Multitarefa onPause() eee19.com
  • 65. Multitarefa eee19.com
  • 66. Multitarefa onResume() eee19.com
  • 67. Multitarefa onPause() eee19.com
  • 68. Multitarefa onStop() eee19.com
  • 69. Multitarefa onStop() onCreate() eee19.com
  • 70. Multitarefa onStop() onCreate() onPause() eee19.com
  • 71. Multitarefa onStop() onCreate() onPause() onStop() eee19.com
  • 72. Multitarefa onStop() onCreate() onPause() onStop() eee19.com
  • 73. Multitarefa onStop() onCreate() onCreate() onPause() onStop() eee19.com
  • 74. Multitarefa onStop() onCreate() onRestart() onPause() onStop() onCreate() eee19.com
  • 75. Multitarefa onStop() onCreate() onRestart() onPause() onStart() onStop() onCreate() eee19.com
  • 76. Prática • Criar uma aplicação com os métodos onCreate(), onStart(), onResume(), onPause(), onStop(), onDestroy() e onRestart()! • Colocar logs nesses métodos e observar o que acontece eee19.com
  • 77. UI • Hierarquia de ViewGroups e Views eee19.com
  • 78. View Group View Group View View View View View http://developer.android.com/guide/topics/ui/overview.html eee19.com
  • 79. Layout <?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" >     <TextView android:id="@+id/text"               android:layout_width="wrap_content"               android:layout_height="wrap_content"               android:text="Hello, I am a TextView" />     <Button android:id="@+id/my_button"             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:text="Hello, I am a Button" /> http://developer.android.com/ </LinearLayout> eee19.com
  • 80. Layout public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.main_layout); } Button myButton = (Button) findViewById(R.id.my_button); http://developer.android.com/ eee19.com
  • 81. Layout • FrameLayout! • LinearLayout! • TableLayout! • RelativeLayout eee19.com
  • 82. Eventos • Definir um listener e registrá-lo com a View! • Sobrecarregar um método de callback na View eee19.com
  • 83. Listeners • onClick() → View.OnClickListener! • onLongClick() → View.OnLongClickListener! • onFocusChange() → View.OnFocusChangeListener! • onKey() → View.OnKeyListener! • onTouch() → View.OnTouchListener! • onCreateContextMenu() → View.OnCreateContextMenuListener eee19.com
  • 84. Listeners // Create an anonymous implementation of OnClickListener private OnClickListener mCorkyListener = new OnClickListener() {     public void onClick(View v) {       // do something when the button is clicked     } }; ! protected void onCreate(Bundle savedValues) {     ...     // Capture our button from layout     Button button = (Button)findViewById(R.id.corky);     // Register the onClick listener with the implementation above     button.setOnClickListener(mCorkyListener); http://developer.android.com/     ... } eee19.com
  • 85. Listeners public class ExampleActivity extends Activity implements OnClickListener {     protected void onCreate(Bundle savedValues) {         ...         Button button = (Button)findViewById(R.id.corky);         button.setOnClickListener(this);     } !     // Implement the OnClickListener callback     public void onClick(View v) {       // do something when the button is clicked     }     ... http://developer.android.com/ } eee19.com
  • 86. Intents • Comunicação intra e inter app de um jeito amigável e inteligente! • Serve para iniciar activities, services e broadcast receivers eee19.com
  • 87. Intents • Possui um alvo facultativo! • Se não tiver especificado alvo, o sistema encontra um! • Pode executar uma Activity ou Service específico! • IntentFilters eee19.com
  • 88. Intents • Component name! • Action! • Data! • Category! • Extras! • Flags eee19.com
  • 89. Intents Constante Alvo Ação ACTION_CALL activity Inicia uma ligação ACTION_EDIT activity Apresenta dados a serem editados ACTION_MAIN activity Activity inicial ACTION_SYNC activity Sincroniza dados com servidor ACTION_BATTERY_LOW broadcast receiver Aviso de bateria fraca ACTION_HEADSET_PLUG broadcast receiver Um fone de ouvido foi conectado ou desconectado ACTION_SCREEN_ON broadcast receiver A tela foi ligada (acesa) ACTION_TIMEZONE_CHANGED broadcast receiver Configurações de timezone modificadas eee19.com
  • 90. Intent filter <intent-filter . . . >     <action android:name="com.example.project.SHOW_CURRENT" />     <action android:name="com.example.project.SHOW_RECENT" />     <action android:name="com.example.project.SHOW_PENDING" />     . . . </intent-filter> <intent-filter . . . >     <data android:mimeType="video/mpeg" android:scheme="http" . . . />     <data android:mimeType="audio/mpeg" android:scheme="http" . . . />     . . . </intent-filter> http://developer.android.com/ eee19.com
  • 91. http://developer.android.com/! ! http://developer.android.com/ training/index.html! eee19.com
  • 92. Obrigado • Twitter/ADN @douglasdrumond! • www.eee19.com! • gplus.to/douglasdrumond eee19.com