96
Desenvolvimento Android Faça da maneira certa! Nelson Glauber GDGRecife / Jun/2014

Desenvolvimento Android: Faça da maneira certa

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: Desenvolvimento Android: Faça da maneira certa

Desenvolvimento AndroidFaça da maneira certa!

Nelson GlauberGDGRecife / Jun/2014

Page 2: Desenvolvimento Android: Faça da maneira certa

Nelson GlauberEngenheiro de Sistemas do C.E.S.A.R.

Professor da Unibratec Android GDE 2014

!@nglauber

+NelsonGlauber nglauber.blogspot.com

http://goo.gl/V7qHc

Page 3: Desenvolvimento Android: Faça da maneira certa

“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.”

Page 4: Desenvolvimento Android: Faça da maneira certa

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

Page 5: Desenvolvimento Android: Faça da maneira certa

ANDROID ESTÁ AQUI…

http://www.google.com/phone

Page 6: Desenvolvimento Android: Faça da maneira certa

E AQUI TAMBÉM!

Page 7: Desenvolvimento Android: Faça da maneira certa

Faça seu aplicativo da maneira certa!

Page 8: Desenvolvimento Android: Faça da maneira certa

Comece com uma boa IDE

Page 9: Desenvolvimento Android: Faça da maneira certa

Comece com uma boa IDE

Page 10: Desenvolvimento Android: Faça da maneira certa

Comece com uma boa IDE

Baseada em Eclipse

Page 11: Desenvolvimento Android: Faça da maneira certa

Comece com uma boa IDE

Baseada em Eclipsehttp://goo.gl/2qpr

Page 12: Desenvolvimento Android: Faça da maneira certa

Comece com uma boa IDE

Baseada em Eclipsehttp://goo.gl/2qpr

Page 13: Desenvolvimento Android: Faça da maneira certa

Comece com uma boa IDE

Baseada em Eclipse

Baseada em IntelliJ IDEA

http://goo.gl/2qpr

Page 14: Desenvolvimento Android: Faça da maneira certa

Comece com uma boa IDE

Baseada em Eclipse

Baseada em IntelliJ IDEA

http://goo.gl/2qpr

http://goo.gl/iJEvl

Page 15: Desenvolvimento Android: Faça da maneira certa

http://www.genymotion.com/

Page 16: Desenvolvimento Android: Faça da maneira certa

http://www.genymotion.com/

Page 17: Desenvolvimento Android: Faça da maneira certa

http://www.genymotion.com/

Page 18: Desenvolvimento Android: Faça da maneira certa

http://www.genymotion.com/

Page 19: Desenvolvimento Android: Faça da maneira certa

Suporte múltiplas telas

Page 20: Desenvolvimento Android: Faça da maneira certa

Suporte múltiplas telas

Page 21: Desenvolvimento Android: Faça da maneira certa

Suporte múltiplas telas

Tamanhos e Densidades diferentes!!!

Page 22: Desenvolvimento Android: Faça da maneira certa

Suporte múltiplas telas

Tamanhos e Densidades diferentes!!!

Page 23: Desenvolvimento Android: Faça da maneira certa

Suporte múltiplas telas

http://goo.gl/cMGs

Page 24: Desenvolvimento Android: Faça da maneira certa

Suporte múltiplas telas

• Tamanho: é a área física de tela em polegadas

http://goo.gl/cMGs

Page 25: Desenvolvimento Android: Faça da maneira certa

Suporte múltiplas telas

• Tamanho: é a área física de tela em polegadas

• Densidade: quantidade de pixels por polegada

http://goo.gl/cMGs

Page 26: Desenvolvimento Android: Faça da maneira certa

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

Page 27: Desenvolvimento Android: Faça da maneira certa

Não use px, use dp (ou dip)

Page 28: Desenvolvimento Android: Faça da maneira certa

!    <Button          android:layout_width="100px"          android:layout_height="100px"          ...  />  

Não use px, use dp (ou dip)

Page 29: Desenvolvimento Android: Faça da maneira certa

!    <Button          android:layout_width="100px"          android:layout_height="100px"          ...  />  

Não use px, use dp (ou dip)

Page 30: Desenvolvimento Android: Faça da maneira certa

!    <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"          ...  />  

Page 31: Desenvolvimento Android: Faça da maneira certa

!    <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"          ...  />  

Page 32: Desenvolvimento Android: Faça da maneira certa

!    <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"          ...  />  

Page 33: Desenvolvimento Android: Faça da maneira certa

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>  

Page 34: Desenvolvimento Android: Faça da maneira certa

Use sp (sip) para textos

!    <TextView          android:textSize="36sp"          ...  />  

Page 35: Desenvolvimento Android: Faça da maneira certa

Defina imagens para cada densidade

http://goo.gl/E70Ez

Page 36: Desenvolvimento Android: Faça da maneira certa

Defina imagens para cada densidade

res/drawable-mdpires/drawable-tvdpires/drawable-hdpires/drawable-xhdpires/drawable-xxhdpires/drawable-xxxhdpi

http://goo.gl/E70Ez

Page 37: Desenvolvimento Android: Faça da maneira certa

Defina imagens para cada densidade

res/drawable-mdpires/drawable-tvdpires/drawable-hdpires/drawable-xhdpires/drawable-xxhdpires/drawable-xxxhdpi

http://goo.gl/E70Ez

Page 38: Desenvolvimento Android: Faça da maneira certa

Defina imagens para cada densidade

Launcher Notifications ActionBar

http://goo.gl/E70Ez

Page 39: Desenvolvimento Android: Faça da maneira certa

Personalize componentes com imagens 9-patched

http://goo.gl/5AiEM

Page 40: Desenvolvimento Android: Faça da maneira certa

Personalize componentes com selectors

http://goo.gl/5AiEM

botao_pressionado.9.pngbotao_normal.9.png botao_desabilitado.9.png

Page 41: Desenvolvimento Android: Faça da maneira certa

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

Page 42: Desenvolvimento Android: Faça da maneira certa

Personalize componentes com selectors

http://goo.gl/5AiEM

botao_pressionado.9.pngbotao_normal.9.png botao_desabilitado.9.png

Page 43: Desenvolvimento Android: Faça da maneira certa

Personalize componentes com selectors

http://goo.gl/5AiEM

botao_pressionado.9.pngbotao_normal.9.png botao_desabilitado.9.png

Page 44: Desenvolvimento Android: Faça da maneira certa

Não diga como o usuário deve segurar o aparelho*

res/layout res/layout-land

* Salvo algumas exceções http://goo.gl/sMhD5

Page 45: Desenvolvimento Android: Faça da maneira certa

Seja poliglota

Page 46: Desenvolvimento Android: Faça da maneira certa

Seja poliglota!    <TextView          android:text=“Hello  World"          ...  />  

Page 47: Desenvolvimento Android: Faça da maneira certa

Seja poliglota!    <TextView          android:text=“Hello  World"          ...  />  

Page 48: Desenvolvimento Android: Faça da maneira certa

Seja poliglota<string  name="hello">     Hello  World </string>

res/values !    <TextView          android:text=“Hello  World"          ...  />  

Page 49: Desenvolvimento Android: Faça da maneira certa

Seja poliglota<string  name="hello">     Hello  World </string>

res/values

<string  name="hello">     Olá  mundo </string>

res/values-pt

!    <TextView          android:text=“Hello  World"          ...  />  

Page 50: Desenvolvimento Android: Faça da maneira certa

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

Page 51: Desenvolvimento Android: Faça da maneira certa

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"          ...  />  

Page 52: Desenvolvimento Android: Faça da maneira certa

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"          ...  />  

Page 53: Desenvolvimento Android: Faça da maneira certa

Use Fragments

http://goo.gl/TRHlS

Page 54: Desenvolvimento Android: Faça da maneira certa

Use Fragments

http://goo.gl/TRHlS

Page 55: Desenvolvimento Android: Faça da maneira certa

Use a ActionBar

http://goo.gl/l5mQA

Page 56: Desenvolvimento Android: Faça da maneira certa

Use a ActionBarÍcone e Título

http://goo.gl/l5mQA

Page 57: Desenvolvimento Android: Faça da maneira certa

Use a ActionBarÍcone e Título Ações

http://goo.gl/l5mQA

Page 58: Desenvolvimento Android: Faça da maneira certa

Use a ActionBarÍcone e Título Ações Overflow

menu

http://goo.gl/l5mQA

Page 59: Desenvolvimento Android: Faça da maneira certa

Use a ActionBarÍcone e Título Ações

Navegação com Abas

Overflow menu

http://goo.gl/l5mQA

Page 60: Desenvolvimento Android: Faça da maneira certa

Use a ActionBarÍcone e Título Ações

Navegação com Abas

Overflow menu

http://goo.gl/l5mQA

Page 61: Desenvolvimento Android: Faça da maneira certa

Use a ActionBarÍcone e Título Ações

Navegação com Abas

Navegação com Spinner

Overflow menu

http://goo.gl/l5mQA

Page 62: Desenvolvimento Android: Faça da maneira certa

Menu lateral = NavigationDrawer

http://goo.gl/phAJy

Page 63: Desenvolvimento Android: Faça da maneira certa

ViewPager

http://goo.gl/2nYzo

Page 64: Desenvolvimento Android: Faça da maneira certa

Salve seus dados!

http://goo.gl/xkXp

Page 65: Desenvolvimento Android: Faça da maneira certa

Salve seus dados!• SharedPreferences para pequenas coisas

http://goo.gl/xkXp

Page 66: Desenvolvimento Android: Faça da maneira certa

Salve seus dados!• SharedPreferences para pequenas coisas

http://goo.gl/xkXp

Page 67: Desenvolvimento Android: Faça da maneira certa

Salve seus dados!• SharedPreferences para pequenas coisas

• SQLite para trabalhar off-line

• CursorLoader + ContentProvider + CursorAdapter

http://goo.gl/xkXp

Page 68: Desenvolvimento Android: Faça da maneira certa

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

Page 69: Desenvolvimento Android: Faça da maneira certa

Acesse a web

http://goo.gl/ZcDlO

Page 70: Desenvolvimento Android: Faça da maneira certa

Acesse a web

• A comunicação deve ser feita em uma outra Thread

http://goo.gl/ZcDlO

Page 71: Desenvolvimento Android: Faça da maneira certa

Acesse a web

• A comunicação deve ser feita em uma outra Thread

• AsyncTask ou AsyncTaskLoader

http://goo.gl/ZcDlO

Page 72: Desenvolvimento Android: Faça da maneira certa

Acesse a web

• A comunicação deve ser feita em uma outra Thread

• AsyncTask ou AsyncTaskLoader

• IntentService

http://goo.gl/ZcDlO

Page 73: Desenvolvimento Android: Faça da maneira certa

Acesse a web

• A comunicação deve ser feita em uma outra Thread

• AsyncTask ou AsyncTaskLoader

• IntentService

• Volley

http://goo.gl/ZcDlO

Page 74: Desenvolvimento Android: Faça da maneira certa

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

Page 75: Desenvolvimento Android: Faça da maneira certa

Acesse a web

http://goo.gl/obp2Chttp://goo.gl/tpTc1

Page 76: Desenvolvimento Android: Faça da maneira certa

Acesse a web

• Imagens em listas?

• Universal Image Loader

• Picasso

• Volley

http://goo.gl/obp2Chttp://goo.gl/tpTc1

Page 77: Desenvolvimento Android: Faça da maneira certa

Acesse a web

• Imagens em listas?

• Universal Image Loader

• Picasso

• Volley

http://goo.gl/obp2Chttp://goo.gl/tpTc1

Page 78: Desenvolvimento Android: Faça da maneira certa

Google Cloud Endpoints

http://goo.gl/Mxzwq

Page 79: Desenvolvimento Android: Faça da maneira certa

Não faça telas de login

http://goo.gl/jfAMI

Page 80: Desenvolvimento Android: Faça da maneira certa

Não faça telas de login

http://goo.gl/jfAMI

Page 81: Desenvolvimento Android: Faça da maneira certa

Não faça telas de login

http://goo.gl/jfAMI

Page 82: Desenvolvimento Android: Faça da maneira certa

Não faça telas de login

http://goo.gl/jfAMI

Page 83: Desenvolvimento Android: Faça da maneira certa

Engajamento

http://goo.gl/v1I4f

Page 84: Desenvolvimento Android: Faça da maneira certa

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

Page 85: Desenvolvimento Android: Faça da maneira certa

Monetize

http://goo.gl/XcaxQd http://goo.gl/JrCWt0

Page 86: Desenvolvimento Android: Faça da maneira certa

Widgets!

http://goo.gl/oDoOT2

Page 87: Desenvolvimento Android: Faça da maneira certa

Widgets!

http://goo.gl/oDoOT2

Page 88: Desenvolvimento Android: Faça da maneira certa

Widgets!

http://goo.gl/oDoOT2

Page 89: Desenvolvimento Android: Faça da maneira certa

Widgets!

http://goo.gl/oDoOT2

Page 90: Desenvolvimento Android: Faça da maneira certa

Widgets!

http://goo.gl/oDoOT2

Page 91: Desenvolvimento Android: Faça da maneira certa

Se vista de Android

http://goo.gl/f0Ng0l

Page 92: Desenvolvimento Android: Faça da maneira certa

Agora é com vocês!

Page 93: Desenvolvimento Android: Faça da maneira certa
Page 94: Desenvolvimento Android: Faça da maneira certa

Dúvidas?

Page 95: Desenvolvimento Android: Faça da maneira certa
Page 96: Desenvolvimento Android: Faça da maneira certa

Obrigado!!