O slideshow foi denunciado.

Desenvolvimento Android: Faça da maneira certa

5.752 visualizações

Publicada em

Palestra sobre boas práticas no desenvolvimento Android para iniciantes. Apresentada no lançamento do GDG Recife em 11/Jun/2014.

Publicada em: Celular
  • Seja o primeiro a comentar

Desenvolvimento Android: Faça da maneira certa

  1. 1. Desenvolvimento Android Faça da maneira certa! Nelson Glauber GDGRecife / Jun/2014
  2. 2. Nelson Glauber Engenheiro de Sistemas do C.E.S.A.R. Professor da Unibratec Android GDE 2014 ! @nglauber +NelsonGlauber nglauber.blogspot.com http://goo.gl/V7qHc
  3. 3. “Android is a software stack for mobile devices that includes an operating system, middleware and key applications. The Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language.”
  4. 4. Mais 190 países ! Mais de 1 milhão de ativações por dia ! Loja com mais de 1,5 bilhão de downloads por dia
  5. 5. ANDROID ESTÁ AQUI… http://www.google.com/phone
  6. 6. E AQUI TAMBÉM!
  7. 7. Faça seu aplicativo da maneira certa!
  8. 8. Comece com uma boa IDE
  9. 9. Comece com uma boa IDE
  10. 10. Comece com uma boa IDE Baseada em Eclipse
  11. 11. Comece com uma boa IDE Baseada em Eclipse http://goo.gl/2qpr
  12. 12. Comece com uma boa IDE Baseada em Eclipse http://goo.gl/2qpr
  13. 13. Comece com uma boa IDE Baseada em Eclipse Baseada em IntelliJ IDEA http://goo.gl/2qpr
  14. 14. Comece com uma boa IDE Baseada em Eclipse Baseada em IntelliJ IDEA http://goo.gl/2qpr http://goo.gl/iJEvl
  15. 15. http://www.genymotion.com/
  16. 16. http://www.genymotion.com/
  17. 17. http://www.genymotion.com/
  18. 18. http://www.genymotion.com/
  19. 19. Suporte múltiplas telas
  20. 20. Suporte múltiplas telas
  21. 21. Suporte múltiplas telas Tamanhos e Densidades diferentes!!!
  22. 22. Suporte múltiplas telas Tamanhos e Densidades diferentes!!!
  23. 23. Suporte múltiplas telas http://goo.gl/cMGs
  24. 24. Suporte múltiplas telas • Tamanho: é a área física de tela em polegadas http://goo.gl/cMGs
  25. 25. Suporte múltiplas telas • Tamanho: é a área física de tela em polegadas • Densidade: quantidade de pixels por polegada http://goo.gl/cMGs
  26. 26. Suporte múltiplas telas • Tamanho: é a área física de tela em polegadas • Densidade: quantidade de pixels por polegada • Resolução: quantidade de pixels na tela http://goo.gl/cMGs
  27. 27. Não use px, use dp (ou dip)
  28. 28. !    <Button          android:layout_width="100px"          android:layout_height="100px"          ...  />   Não use px, use dp (ou dip)
  29. 29. !    <Button          android:layout_width="100px"          android:layout_height="100px"          ...  />   Não use px, use dp (ou dip)
  30. 30. !    <Button          android:layout_width="100px"          android:layout_height="100px"          ...  />   Não use px, use dp (ou dip) !    <Button          android:layout_width="100dp"          android:layout_height="100dp"          ...  />  
  31. 31. !    <Button          android:layout_width="100px"          android:layout_height="100px"          ...  />   Não use px, use dp (ou dip) !    <Button          android:layout_width="100dp"          android:layout_height="100dp"          ...  />  
  32. 32. !    <Button          android:layout_width="100px"          android:layout_height="100px"          ...  />   Não use px, use dp (ou dip) !    <Button          android:layout_width="100dp"          android:layout_height="100dp"          ...  />  
  33. 33. Use dp para margin e padding ! <LinearLayout  ...>          <TextView                  android:layout_width="wrap_content"                  android:layout_height="wrap_content"                  android:text="Margin"                  android:background="#FFFF00"                  android:layout_margin="40dp"/>          <TextView                  android:layout_width="wrap_content"                  android:layout_height="wrap_content"                  android:text="Padding"                  android:background="#00FF00"                  android:padding="40dp"/>   </LinearLayout>  
  34. 34. Use sp (sip) para textos !    <TextView          android:textSize="36sp"          ...  />  
  35. 35. Defina imagens para cada densidade http://goo.gl/E70Ez
  36. 36. Defina imagens para cada densidade res/drawable-mdpi res/drawable-tvdpi res/drawable-hdpi res/drawable-xhdpi res/drawable-xxhdpi res/drawable-xxxhdpi http://goo.gl/E70Ez
  37. 37. Defina imagens para cada densidade res/drawable-mdpi res/drawable-tvdpi res/drawable-hdpi res/drawable-xhdpi res/drawable-xxhdpi res/drawable-xxxhdpi http://goo.gl/E70Ez
  38. 38. Defina imagens para cada densidade Launcher Notifications ActionBar http://goo.gl/E70Ez
  39. 39. Personalize componentes com imagens 9-patched http://goo.gl/5AiEM
  40. 40. Personalize componentes com selectors http://goo.gl/5AiEM botao_pressionado.9.pngbotao_normal.9.png botao_desabilitado.9.png
  41. 41. Personalize componentes com selectors http://goo.gl/5AiEM !    <selector  ...>          <item  android:state_pressed="true"                  android:drawable="@drawable/botao_pressionado"/>          <item  android:state_enabled="false"                  android:drawable="@drawable/botao_desabilitado"/>          <item  android:drawable="@drawable/botao_normal"/>      </selector>   botao_pressionado.9.pngbotao_normal.9.png botao_desabilitado.9.png
  42. 42. Personalize componentes com selectors http://goo.gl/5AiEM botao_pressionado.9.pngbotao_normal.9.png botao_desabilitado.9.png
  43. 43. Personalize componentes com selectors http://goo.gl/5AiEM botao_pressionado.9.pngbotao_normal.9.png botao_desabilitado.9.png
  44. 44. Não diga como o usuário deve segurar o aparelho* res/layout res/layout-land * Salvo algumas exceções http://goo.gl/sMhD5
  45. 45. Seja poliglota
  46. 46. Seja poliglota !    <TextView          android:text=“Hello  World"          ...  />  
  47. 47. Seja poliglota !    <TextView          android:text=“Hello  World"          ...  />  
  48. 48. Seja poliglota <string  name="hello">     Hello  World
 </string> res/values !    <TextView          android:text=“Hello  World"          ...  />  
  49. 49. Seja poliglota <string  name="hello">     Hello  World
 </string> res/values <string  name="hello">     Olá  mundo
 </string> res/values-pt !    <TextView          android:text=“Hello  World"          ...  />  
  50. 50. Seja poliglota <string  name="hello">     Hello  World
 </string> res/values <string  name="hello">     Olá  mundo
 </string> res/values-pt !    <TextView          android:text=“Hello  World"          ...  />   <string  name="hello">     Hola  mundo
 </string> res/values-es
  51. 51. Seja poliglota <string  name="hello">     Hello  World
 </string> res/values <string  name="hello">     Olá  mundo
 </string> res/values-pt !    <TextView          android:text=“Hello  World"          ...  />   <string  name="hello">     Hola  mundo
 </string> res/values-es !    <TextView          android:text="@string/hello"          ...  />  
  52. 52. Seja poliglota <string  name="hello">     Hello  World
 </string> res/values <string  name="hello">     Olá  mundo
 </string> res/values-pt !    <TextView          android:text=“Hello  World"          ...  />   <string  name="hello">     Hola  mundo
 </string> res/values-es http://goo.gl/JAuu !    <TextView          android:text="@string/hello"          ...  />  
  53. 53. Use Fragments http://goo.gl/TRHlS
  54. 54. Use Fragments http://goo.gl/TRHlS
  55. 55. Use a ActionBar http://goo.gl/l5mQA
  56. 56. Use a ActionBar Ícone e Título http://goo.gl/l5mQA
  57. 57. Use a ActionBar Ícone e Título Ações http://goo.gl/l5mQA
  58. 58. Use a ActionBar Ícone e Título Ações Overflow menu http://goo.gl/l5mQA
  59. 59. Use a ActionBar Ícone e Título Ações Navegação com Abas Overflow menu http://goo.gl/l5mQA
  60. 60. Use a ActionBar Ícone e Título Ações Navegação com Abas Overflow menu http://goo.gl/l5mQA
  61. 61. Use a ActionBar Ícone e Título Ações Navegação com Abas Navegação com Spinner Overflow menu http://goo.gl/l5mQA
  62. 62. Menu lateral = NavigationDrawer http://goo.gl/phAJy
  63. 63. ViewPager http://goo.gl/2nYzo
  64. 64. Salve seus dados! http://goo.gl/xkXp
  65. 65. Salve seus dados! • SharedPreferences para pequenas coisas http://goo.gl/xkXp
  66. 66. Salve seus dados! • SharedPreferences para pequenas coisas http://goo.gl/xkXp
  67. 67. Salve seus dados! • SharedPreferences para pequenas coisas • SQLite para trabalhar off-line • CursorLoader + ContentProvider + CursorAdapter http://goo.gl/xkXp
  68. 68. Salve seus dados! • SharedPreferences para pequenas coisas • SQLite para trabalhar off-line • CursorLoader + ContentProvider + CursorAdapter • Salve na nuvem • Em uma app servidora • Play Games • Android Backup Service http://goo.gl/xkXp
  69. 69. Acesse a web http://goo.gl/ZcDlO
  70. 70. Acesse a web • A comunicação deve ser feita em uma outra Thread http://goo.gl/ZcDlO
  71. 71. Acesse a web • A comunicação deve ser feita em uma outra Thread • AsyncTask ou AsyncTaskLoader http://goo.gl/ZcDlO
  72. 72. Acesse a web • A comunicação deve ser feita em uma outra Thread • AsyncTask ou AsyncTaskLoader • IntentService http://goo.gl/ZcDlO
  73. 73. Acesse a web • A comunicação deve ser feita em uma outra Thread • AsyncTask ou AsyncTaskLoader • IntentService • Volley http://goo.gl/ZcDlO
  74. 74. Acesse a web • A comunicação deve ser feita em uma outra Thread • AsyncTask ou AsyncTaskLoader • IntentService • Volley • Acesse serviços REST http://goo.gl/ZcDlO
  75. 75. Acesse a web http://goo.gl/obp2C http://goo.gl/tpTc1
  76. 76. Acesse a web • Imagens em listas? • Universal Image Loader • Picasso • Volley http://goo.gl/obp2C http://goo.gl/tpTc1
  77. 77. Acesse a web • Imagens em listas? • Universal Image Loader • Picasso • Volley http://goo.gl/obp2C http://goo.gl/tpTc1
  78. 78. Google Cloud Endpoints http://goo.gl/Mxzwq
  79. 79. Não faça telas de login http://goo.gl/jfAMI
  80. 80. Não faça telas de login http://goo.gl/jfAMI
  81. 81. Não faça telas de login http://goo.gl/jfAMI
  82. 82. Não faça telas de login http://goo.gl/jfAMI
  83. 83. Engajamento http://goo.gl/v1I4f
  84. 84. Anime-se • É possível animar transições de tela (Activities e Fragments) • Views individualmente (escala, rotação, translação, …) • Adição e remoção de componentes em layouts • Criar animações quadro-a-quadro http://goo.gl/0iVE
  85. 85. Monetize http://goo.gl/XcaxQd http://goo.gl/JrCWt0
  86. 86. Widgets! http://goo.gl/oDoOT2
  87. 87. Widgets! http://goo.gl/oDoOT2
  88. 88. Widgets! http://goo.gl/oDoOT2
  89. 89. Widgets! http://goo.gl/oDoOT2
  90. 90. Widgets! http://goo.gl/oDoOT2
  91. 91. Se vista de Android http://goo.gl/f0Ng0l
  92. 92. Agora é com vocês!
  93. 93. Dúvidas?
  94. 94. Obrigado!!

×