• Like
Aula android 02.pdf
Upcoming SlideShare
Loading in...5
×

Aula android 02.pdf

  • 2,450 views
Uploaded on

 

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

Views

Total Views
2,450
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
245
Comments
0
Likes
0

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. domingo, 21 de outubro de 12
  • 2. Carlos Cavalcanti @CarlosCaval contato@carloscavalcanti.comdomingo, 21 de outubro de 12
  • 3. Fragmentaçãodomingo, 21 de outubro de 12
  • 4. Fragmentaçãodomingo, 21 de outubro de 12
  • 5. domingo, 21 de outubro de 12
  • 6. domingo, 21 de outubro de 12
  • 7. domingo, 21 de outubro de 12
  • 8. domingo, 21 de outubro de 12
  • 9. Extra! Palestra sobre fragments http://www.youtube.com/watch?v=A3z5TO8COZM Fragmentsdomingo, 21 de outubro de 12
  • 10. domingo, 21 de outubro de 12
  • 11. Troca de informações entre telasdomingo, 21 de outubro de 12
  • 12. MainActivityString mensagemQualquer = "Olá!";Intent intent = new Intent(this, SegundaActivity.class);intent.putExtra("mensagem", mensagemQualquer);startActivity(intent);SegundaActivityIntent intent = getIntent();String mensagem = intent.getStringExtra("mensagem");domingo, 21 de outubro de 12
  • 13. putExtra()domingo, 21 de outubro de 12
  • 14. get?Extra()domingo, 21 de outubro de 12
  • 15. get?Extra() intent.getIntExtra(name, defaultValue)domingo, 21 de outubro de 12
  • 16. get?Extra() intent.getIntExtra(name, defaultValue) intent.getStringExtra(name)domingo, 21 de outubro de 12
  • 17. get?Extra() intent.getIntExtra(name, defaultValue) intent.getLongExtra(name, defaultValue) intent.getStringExtra(name)domingo, 21 de outubro de 12
  • 18. get?Extra() intent.getIntExtra(name, defaultValue) intent.getLongExtra(name, defaultValue) intent.getBooleanExtra(name, defaultValue) intent.getStringExtra(name)domingo, 21 de outubro de 12
  • 19. get?Extra() intent.getIntExtra(name, defaultValue) intent.getLongExtra(name, defaultValue) intent.getBooleanExtra(name, defaultValue) intent.getStringExtra(name) intent.getFloatExtra(name, defaultValue)domingo, 21 de outubro de 12
  • 20. get?Extra() intent.getIntExtra(name, defaultValue) intent.getLongExtra(name, defaultValue) intent.getBooleanExtra(name, defaultValue) intent.getStringExtra(name) intent.getFloatArrayExtra(name) intent.getFloatExtra(name, defaultValue)domingo, 21 de outubro de 12
  • 21. get?Extra() intent.getIntExtra(name, defaultValue) intent.getIntArrayExtra(name) intent.getLongExtra(name, defaultValue) intent.getBooleanExtra(name, defaultValue) intent.getStringExtra(name) intent.getFloatArrayExtra(name) intent.getFloatExtra(name, defaultValue)domingo, 21 de outubro de 12
  • 22. • Criar duas activitys• A activity principal deverá ter um editText e um Button. Ao pressionar o button deverá abrir uma outra activity e mandar via putExtra() a mensagem do editText• Deverá exibir a mensagem digitada no editText em um textViewMainActivityString mensagemQualquer = "Olá!";Intent intent = new Intent(this, SegundaActivity.class);intent.putExtra("mensagem", mensagemQualquer);startActivity(intent);SegundaActivityIntent intent = getIntent();String mensagem = intent.getStringExtra("mensagem");domingo, 21 de outubro de 12
  • 23. domingo, 21 de outubro de 12
  • 24. logcatdomingo, 21 de outubro de 12
  • 25. domingo, 21 de outubro de 12
  • 26. domingo, 21 de outubro de 12
  • 27. domingo, 21 de outubro de 12
  • 28. import android.util.Log; Exemplo Log //Verbose Log.v("Tag", "Messagem"); //Debug Log.d("Tag", "Messagem"); //Info Log.i("Tag", "Messagem"); //Warn Log.w("Tag", "Messagem"); //Error Log.e("Tag", "Messagem");domingo, 21 de outubro de 12
  • 29. Filtragemdomingo, 21 de outubro de 12
  • 30. Filtragemdomingo, 21 de outubro de 12
  • 31. Tipos de logs e suas cores Nivel Sigla Cor Debug D azul Verbose V preto Info I verde Warn W laranja Error E vermelhodomingo, 21 de outubro de 12
  • 32. Exercício • Logar os eventos da activitydomingo, 21 de outubro de 12
  • 33. Ciclo de vida da activitydomingo, 21 de outubro de 12
  • 34. public class CicloDeVidaActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.i("Teste", "onCreate"); } @Override protected void onResume() { @Override super.onResume(); protected void onStart() { Log.i("Teste", "onResume"); super.onStart(); } Log.i("Teste", "onStart"); } @Override protected void onPause() { @Override super.onPause(); protected void onRestart() { Log.i("Teste", "onPause"); super.onRestart(); } Log.i("Teste", "onRestart"); } @Override protected void onStop() { super.onStop(); Log.i("Teste", "onStop"); } @Override protected void onDestroy() { super.onDestroy(); Log.i("Teste", "onDestroy"); } }domingo, 21 de outubro de 12
  • 35. Componentes de teladomingo, 21 de outubro de 12
  • 36. TextView’s<TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Large Text" android:textAppearance="?android:attr/textAppearanceLarge" /> <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Small Text" android:textAppearance="?android:attr/textAppearanceSmall" />domingo, 21 de outubro de 12
  • 37. CheckBox e RadioButton <CheckBox android:id="@+id/checkBox1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="CheckBox" /> <RadioButton android:id="@+id/radioButton1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="RadioButton" />domingo, 21 de outubro de 12
  • 38. CheckBox e RadioButton <CheckBox android:id="@+id/checkBox1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="CheckBox" /> <RadioButton android:id="@+id/radioButton1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="RadioButton" />domingo, 21 de outubro de 12
  • 39. CheckBox e RadioButton <CheckBox android:id="@+id/checkBox1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="CheckBox" /> <RadioButton android:id="@+id/radioButton1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="RadioButton" />domingo, 21 de outubro de 12
  • 40. ProgressBar’s <ProgressBar android:id="@+id/progressBar3" style="?android:attr/progressBarStyleSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <ProgressBar android:id="@+id/progressBar2" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <ProgressBar android:id="@+id/progressBar1" style="?android:attr/progressBarStyleLarge" android:layout_width="wrap_content" android:layout_height="wrap_content" />domingo, 21 de outubro de 12
  • 41. ProgressBar’s <ProgressBar android:id="@+id/progressBar3" style="?android:attr/progressBarStyleSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <ProgressBar android:id="@+id/progressBar2" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <ProgressBar android:id="@+id/progressBar1" style="?android:attr/progressBarStyleLarge" android:layout_width="wrap_content" android:layout_height="wrap_content" />domingo, 21 de outubro de 12
  • 42. ProgressBar’s <ProgressBar android:id="@+id/progressBar3" style="?android:attr/progressBarStyleSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <ProgressBar android:id="@+id/progressBar2" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <ProgressBar android:id="@+id/progressBar1" style="?android:attr/progressBarStyleLarge" android:layout_width="wrap_content" android:layout_height="wrap_content" />domingo, 21 de outubro de 12
  • 43. ProgressBar’s <ProgressBar android:id="@+id/progressBar3" style="?android:attr/progressBarStyleSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <ProgressBar android:id="@+id/progressBar2" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <ProgressBar android:id="@+id/progressBar1" style="?android:attr/progressBarStyleLarge" android:layout_width="wrap_content" android:layout_height="wrap_content" />domingo, 21 de outubro de 12
  • 44. ProgressBar e SeekBar <ProgressBar android:id="@+id/progressBar1" style="?android:attr/progressBarStyleHorizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:max="100" android:progress="50" /> <SeekBar android:id="@+id/seekBar1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:max="100" android:progress="30" />domingo, 21 de outubro de 12
  • 45. ProgressBar e SeekBar <ProgressBar android:id="@+id/progressBar1" style="?android:attr/progressBarStyleHorizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:max="100" android:progress="50" /> <SeekBar android:id="@+id/seekBar1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:max="100" android:progress="30" />domingo, 21 de outubro de 12
  • 46. ProgressBar e SeekBar <ProgressBar android:id="@+id/progressBar1" style="?android:attr/progressBarStyleHorizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:max="100" android:progress="50" /> <SeekBar android:id="@+id/seekBar1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:max="100" android:progress="30" />domingo, 21 de outubro de 12
  • 47. QuickContactBadge e RatingBar <QuickContactBadge android:id="@+id/quickContactBadge1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/ic_launcher" /> <RatingBar android:id="@+id/ratingBar1" android:layout_width="wrap_content" android:layout_height="wrap_content" />domingo, 21 de outubro de 12
  • 48. QuickContactBadge e RatingBar <QuickContactBadge android:id="@+id/quickContactBadge1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/ic_launcher" /> <RatingBar android:id="@+id/ratingBar1" android:layout_width="wrap_content" android:layout_height="wrap_content" />domingo, 21 de outubro de 12
  • 49. QuickContactBadge e RatingBar <QuickContactBadge android:id="@+id/quickContactBadge1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/ic_launcher" /> <RatingBar android:id="@+id/ratingBar1" android:layout_width="wrap_content" android:layout_height="wrap_content" />domingo, 21 de outubro de 12
  • 50. QuickContactBadgedomingo, 21 de outubro de 12
  • 51. RadioButton <RadioGroup android:id="@+id/radioGroup1" android:layout_width="wrap_content" android:layout_height="wrap_content" > <RadioButton android:id="@+id/radio0" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true" android:text="RadioButton" /> <RadioButton android:id="@+id/radio1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="RadioButton" /> <RadioButton android:id="@+id/radio2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="RadioButton" /> </RadioGroup>domingo, 21 de outubro de 12
  • 52. RadioButton <RadioGroup android:id="@+id/radioGroup1" android:layout_width="wrap_content" android:layout_height="wrap_content" > <RadioButton android:id="@+id/radio0" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true" android:text="RadioButton" /> <RadioButton android:id="@+id/radio1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="RadioButton" /> <RadioButton android:id="@+id/radio2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="RadioButton" /> </RadioGroup>domingo, 21 de outubro de 12
  • 53. EditText <EditText android:id="@+id/editText1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="olá" />domingo, 21 de outubro de 12
  • 54. EditText <EditText android:id="@+id/editText1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="olá" />domingo, 21 de outubro de 12
  • 55. ImageView e ImageButton <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_launcher" /> <ImageButton android:id="@+id/imageButton1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_launcher" />domingo, 21 de outubro de 12
  • 56. ImageView e ImageButton <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_launcher" /> <ImageButton android:id="@+id/imageButton1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_launcher" />domingo, 21 de outubro de 12
  • 57. ImageView e ImageButton <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_launcher" /> <ImageButton android:id="@+id/imageButton1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_launcher" />domingo, 21 de outubro de 12
  • 58. Time & Date <TimePicker android:id="@+id/timePicker1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <DatePicker android:id="@+id/datePicker1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <AnalogClock android:id="@+id/analogClock1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <Chronometer android:id="@+id/chronometer1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Chronometer" />domingo, 21 de outubro de 12
  • 59. Time & Date <TimePicker android:id="@+id/timePicker1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <DatePicker android:id="@+id/datePicker1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <AnalogClock android:id="@+id/analogClock1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <Chronometer android:id="@+id/chronometer1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Chronometer" />domingo, 21 de outubro de 12
  • 60. Exercício • Criar um novo projeto • Inserir na tela 3 RadioButton’s • Os RadioButton’s deverão ter o texto: • Tela 1 • Tela 2 • Tela 3 • Inserir na tela 1 Button • Criar mais 3 telas (activitys) • Cada tela deverá exibir um texto diferente de sua preferência • Cada RadioButton deverá ter uma tela correspondente que ao clicar no botão deverá abri-ladomingo, 21 de outubro de 12
  • 61. Exercício • Criar um novo projeto Dica • Inserir na tela 3 RadioButton’s • Os RadioButton’s deverão ter o texto: • Tela 1 • Tela 2 • Tela 3 • Inserir na tela 1 Button • Criar mais 3 telas (activitys) • Cada tela deverá exibir um texto diferente de sua preferência • Cada RadioButton deverá ter uma tela correspondente que ao clicar no botão deverá abri-ladomingo, 21 de outubro de 12
  • 62. Exercício • Criar um novo projeto Dica • RadioButton radio0 = (RadioButton) findViewById(R.id.radio0); Inserir na tela 3 RadioButton’s if (radio0.isChecked()) ... • Os RadioButton’s deverão ter o texto: • Tela 1 • Tela 2 • Tela 3 • Inserir na tela 1 Button • Criar mais 3 telas (activitys) • Cada tela deverá exibir um texto diferente de sua preferência • Cada RadioButton deverá ter uma tela correspondente que ao clicar no botão deverá abri-ladomingo, 21 de outubro de 12
  • 63. Layoutsdomingo, 21 de outubro de 12
  • 64. Altura e largura Atributo Descrição android:layout_height Especifica a altura de um componente android:layout_width Especifica a largura de um componentedomingo, 21 de outubro de 12
  • 65. Valores para altura e largura • fill_parent - Significa que o componente precisa ocupar todo o tamanho definido por seu pai (layout), ou seja, este deverá ser sempre usado quando o componente necessita ocupar o espaço de layout. • wrap_content -Para o componente ocupar apenas o tamanho necessário na tela • Valor - Podemos também passar um valor númerico informando o tamanho do componentedomingo, 21 de outubro de 12
  • 66. Valores para altura e largura Atributo Descriçãofill_parent Significa que o componente precisa ocupar todo o tamanho definido por seu pai (layout), ou seja, este deverá ser sempre usado quando o componente necessita ocupar o espaço de layout.wrap_content Para o componente ocupar apenas o tamanho necessário na telaValor Podemos também passar um valor númerico informando o tamanho do componentedomingo, 21 de outubro de 12
  • 67. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Botao de teste" android:layout_gravity="left" /></LinearLayout>domingo, 21 de outubro de 12
  • 68. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="fill_parent" android:text="Botao de teste" android:layout_gravity="left" /> </LinearLayout>domingo, 21 de outubro de 12
  • 69. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <Button android:id="@+id/button1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Botao de teste" android:layout_gravity="left" /> </LinearLayout>domingo, 21 de outubro de 12
  • 70. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <Button android:id="@+id/button1" android:layout_width="300px" android:layout_height="wrap_content" android:text="Botao de teste" android:layout_gravity="left" /> </LinearLayout>domingo, 21 de outubro de 12
  • 71. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <Button android:id="@+id/button1" android:layout_width="300dp" android:layout_height="wrap_content" android:text="Botao de teste" android:layout_gravity="left" /></LinearLayout> domingo, 21 de outubro de 12
  • 72. Density-independent pixel (dp) A conversão de unidades de DP para pixels da tela é simples: px = dp * (dpi / 160). Por exemplo, em uma tela de 240 dpi, 1 dp igual a 1,5 pixels físicas.domingo, 21 de outubro de 12
  • 73. AbsoluteLayout • Este tipo de layout permite posicionar os componentes da maneira desejada através das coordenadas do x e y.domingo, 21 de outubro de 12
  • 74. domingo, 21 de outubro de 12
  • 75. <AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="39dp" android:layout_y="37dp" android:text="Button" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="180dp" android:layout_y="203dp" android:text="Button" /> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="205dp" android:layout_y="69dp" android:text="TextView" /></AbsoluteLayout>domingo, 21 de outubro de 12
  • 76. FrameLayout • Este layout é utilizado por um componente que precisa preencher a tela inteira. É possível inserir mais de um componente no FrameLayout, porém sempre serão os últimos que ficarão no topo do elemento, obedecendo o conceito de pilha. Isso é útil para construir aplicações com uma imagem em segundo plano.domingo, 21 de outubro de 12
  • 77. LinearLayout • Este layout é usado para organizar os componentes na vertical ou horizontal através do atributo android:orientation.domingo, 21 de outubro de 12
  • 78. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> </LinearLayout>domingo, 21 de outubro de 12
  • 79. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /></LinearLayout>domingo, 21 de outubro de 12
  • 80. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" android:layout_gravity="left" /> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" android:layout_gravity="center"/> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" android:layout_gravity="right"/> </LinearLayout>domingo, 21 de outubro de 12
  • 81. Peso - weightdomingo, 21 de outubro de 12
  • 82. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" android:layout_gravity="left" /> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" android:layout_gravity="center"/> <EditText android:id="@+id/editText1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> </LinearLayout>domingo, 21 de outubro de 12
  • 83. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" android:layout_gravity="left" /> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" android:layout_gravity="center"/> <EditText android:id="@+id/editText1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> </LinearLayout>domingo, 21 de outubro de 12
  • 84. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" android:layout_gravity="left" /> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" android:layout_weight="1" android:layout_gravity="center"/> <EditText android:id="@+id/editText1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1"/> <EditText android:id="@+id/editText2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="2"/> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /></LinearLayout>domingo, 21 de outubro de 12
  • 85. Quanto maior o weight maior será sua importância (peso)domingo, 21 de outubro de 12
  • 86. TableLayout • Este é usado para organizar os componentes em uma tabela, com linhas e colunasdomingo, 21 de outubro de 12
  • 87. <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:shrinkColumns="2"> <TableRow> <TextView android:text="coluna 1"/> <TextView android:text="coluna 2"/> </TableRow> <TableRow> <TextView android:text="coluna 1"/> <TextView android:text="coluna 2"/> <TextView android:text="Texto grande que vai siar da tela, deverá quebrar a coluna pois o shrinkColumn=2"/> </TableRow> <TableRow> <TextView android:text="coluna 1"/> <TextView android:text="coluna 2"/> <TextView android:text="Coluna 3"/> </TableRow></TableLayout>domingo, 21 de outubro de 12
  • 88. RelativeLayout • Este Permite posicionar um componente relativo a outro, por exemplo, abaixo, acima ou ao lado de um componente já existentedomingo, 21 de outubro de 12
  • 89. Atributo Descrição android:layout:below Posiciona abaixo do componente indicado android:layout:above Posiciona acima do componente indicado android:layout:toRightOf Posiciona a direita do componente indicado android:layout:toLeftOf Posiciona a esquerda do componente indicado android:layout:alignParentTop Alinha no topo do componente indicado android:layout:alignParentBottom Alinha abaixo do componente indicado android:layout:layout_marginTop Utilizado para definir um espaço na margem superior do componente android:layout:layout_marginRight Utilizado para definir um espaço a direita do componente android:layout:layout_marginLeft Utilizado para definir um espaço a esquerda do componentedomingo, 21 de outubro de 12
  • 90. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:id="@+id/txtLogin" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Usuario"/> <EditText android:id="@+id/edtLogin" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_toRightOf="@id/txtLogin"/> </RelativeLayout>domingo, 21 de outubro de 12
  • 91. BroadcastReceiverdomingo, 21 de outubro de 12
  • 92. O que é BroadcastReceiver ?domingo, 21 de outubro de 12
  • 93. Ela é usada para responder a determinados eventos.domingo, 21 de outubro de 12
  • 94. Por exemplo...domingo, 21 de outubro de 12
  • 95. domingo, 21 de outubro de 12
  • 96. domingo, 21 de outubro de 12
  • 97. domingo, 21 de outubro de 12
  • 98. domingo, 21 de outubro de 12
  • 99. domingo, 21 de outubro de 12
  • 100. Como implementar?domingo, 21 de outubro de 12
  • 101. Primeiramente é necessário criar uma classe que herde do BroadcastReceiverdomingo, 21 de outubro de 12
  • 102. public class ExemploReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String mensagem ="Oi mãe, to sendo executado pelo receiver! :D"; Toast.makeText(context, mensagem, Toast.LENGTH_LONG).show(); }}domingo, 21 de outubro de 12
  • 103. public class ExemploReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String mensagem ="Oi mãe, to sendo executado pelo receiver! :D"; Toast.makeText(context, mensagem, Toast.LENGTH_LONG).show(); }}domingo, 21 de outubro de 12
  • 104. public class ExemploReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String mensagem ="Oi mãe, to sendo executado pelo receiver! :D"; Toast.makeText(context, mensagem, Toast.LENGTH_LONG).show(); }}domingo, 21 de outubro de 12
  • 105. Além disso... Para configurar o BroadcastReceiver é necessário utilizar a tag <receiver> no arquivo manifest.domingo, 21 de outubro de 12
  • 106. <receiver android:name=".ExemploReceiver" android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </receiver>domingo, 21 de outubro de 12
  • 107. domingo, 21 de outubro de 12
  • 108. Notificationdomingo, 21 de outubro de 12
  • 109. O que é Notification ?domingo, 21 de outubro de 12
  • 110. domingo, 21 de outubro de 12
  • 111. O que é necessário?domingo, 21 de outubro de 12
  • 112. Criar umdomingo, 21 de outubro de 12
  • 113. Criar um Notificationdomingo, 21 de outubro de 12
  • 114. Criar um NotificationManager Notificationdomingo, 21 de outubro de 12
  • 115. private void criarNotification() { NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); Notification notification = new Notification(R.drawable.ic_launcher, "Uma nova mensagem!", System.currentTimeMillis()); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, TelaParaNotificacaoActivity.class), 0); notification.setLatestEventInfo(this, "Titulo", "Conteúdo", pendingIntent); notificationManager.notify(R.string.app_name, notification); }domingo, 21 de outubro de 12
  • 116. private void criarNotification() { NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); Notification notification = new Notification(R.drawable.ic_launcher, "Uma nova mensagem!", System.currentTimeMillis()); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, TelaParaNotificacaoActivity.class), 0); notification.setLatestEventInfo(this, "Titulo", "Conteúdo", pendingIntent); notificationManager.notify(R.string.app_name, notification); }domingo, 21 de outubro de 12
  • 117. private void criarNotification() { NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); Notification notification = new Notification(R.drawable.ic_launcher, "Uma nova mensagem!", System.currentTimeMillis()); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, TelaParaNotificacaoActivity.class), 0); notification.setLatestEventInfo(this, "Titulo", "Conteúdo", pendingIntent); notificationManager.notify(R.string.app_name, notification); }domingo, 21 de outubro de 12
  • 118. private void criarNotification() { NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); Notification notification = new Notification(R.drawable.ic_launcher, "Uma nova mensagem!", System.currentTimeMillis()); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, TelaParaNotificacaoActivity.class), 0); notification.setLatestEventInfo(this, "Titulo", "Conteúdo", pendingIntent); notificationManager.notify(R.string.app_name, notification); }domingo, 21 de outubro de 12
  • 119. private void criarNotification() { NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); Notification notification = new Notification(R.drawable.ic_launcher, "Uma nova mensagem!", System.currentTimeMillis()); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, TelaParaNotificacaoActivity.class), 0); notification.setLatestEventInfo(this, "Titulo", "Conteúdo", pendingIntent); notificationManager.notify(R.string.app_name, notification); }domingo, 21 de outubro de 12
  • 120. private void criarNotification() { NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); Notification notification = new Notification(R.drawable.ic_launcher, "Uma nova mensagem!", System.currentTimeMillis()); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, TelaParaNotificacaoActivity.class), 0); notification.setLatestEventInfo(this, "Titulo", "Conteúdo", pendingIntent); notificationManager.notify(R.string.app_name, notification); }domingo, 21 de outubro de 12
  • 121. private void criarNotification() { NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); Notification notification = new Notification(R.drawable.ic_launcher, "Uma nova mensagem!", System.currentTimeMillis()); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, TelaParaNotificacaoActivity.class), 0); notification.setLatestEventInfo(this, "Titulo", "Conteúdo", pendingIntent); notificationManager.notify(R.string.app_name, notification); }domingo, 21 de outubro de 12
  • 122. private void criarNotification() { NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); Notification notification = new Notification(R.drawable.ic_launcher, "Uma nova mensagem!", System.currentTimeMillis()); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, TelaParaNotificacaoActivity.class), 0); notification.setLatestEventInfo(this, "Titulo", "Conteúdo", pendingIntent); notificationManager.notify(R.string.app_name, notification); }domingo, 21 de outubro de 12
  • 123. private void criarNotification() { NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); Notification notification = new Notification(R.drawable.ic_launcher, "Uma nova mensagem!", System.currentTimeMillis()); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, TelaParaNotificacaoActivity.class), 0); notification.setLatestEventInfo(this, "Titulo", "Conteúdo", pendingIntent); notificationManager.notify(R.string.app_name, notification); }domingo, 21 de outubro de 12
  • 124. private void criarNotification() { NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); Notification notification = new Notification(R.drawable.ic_launcher, "Uma nova mensagem!", System.currentTimeMillis()); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, TelaParaNotificacaoActivity.class), 0); notification.setLatestEventInfo(this, "Titulo", "Conteúdo", pendingIntent); notificationManager.notify(R.string.app_name, notification); }domingo, 21 de outubro de 12
  • 125. domingo, 21 de outubro de 12
  • 126. domingo, 21 de outubro de 12
  • 127. domingo, 21 de outubro de 12
  • 128. domingo, 21 de outubro de 12
  • 129. Notification notification = new Notification(icone, texto, quando); Parâmetro Descrição init O id do recurso do icone para exibir na barra de status da notificação texto Titulo do texto para exibir na barra de status na primeira vez em que a notificação aparece quando A data e hora para exibir a notificação.domingo, 21 de outubro de 12
  • 130. PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, TelaParaNotificacaoActivity.class), 0); Parâmetro Descrição Contexto O contexto, referência da activity que está criando a notificação. Código Código para identificar a requisição. Intent Contém as informações da activity que deverá ser exibida caso o usuário pressione a notificação flags Flags opcionais para controlar a abertura da intent fornecidadomingo, 21 de outubro de 12
  • 131. notification.setLatestEventInfo(this, "Titulo", "Conteúdo", pendingIntent); Parâmetro Descrição Contexto Referência da activity que está criando a notification Titulo Titulo da notificação Conteúdo Conteúdo com os detalhes da notification intent Referência da PendingIntentdomingo, 21 de outubro de 12
  • 132. Exercício • Criar 2 telas • Uma deverá ter um botão que irá criar uma notificação • A outra tela deverá ser chamada ao clicar na notificação. Esta deverá ter um textView.domingo, 21 de outubro de 12
  • 133. Ao pressionar a notificação ela não está sumindo!!!!domingo, 21 de outubro de 12
  • 134. É necessário mandar fecha-la em algum momento.domingo, 21 de outubro de 12
  • 135. Através do método cancel() do NotificationManagerdomingo, 21 de outubro de 12
  • 136. @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.tela_para_notificacao); NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); notificationManager.cancel(R.string.app_name); }domingo, 21 de outubro de 12
  • 137. @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.tela_para_notificacao); NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); notificationManager.cancel(R.string.app_name); }domingo, 21 de outubro de 12
  • 138. É possível...domingo, 21 de outubro de 12
  • 139. É possível...domingo, 21 de outubro de 12
  • 140. É possível... fazer o celular vibrar!domingo, 21 de outubro de 12
  • 141. Propriedade vibrate do Notification notification.vibrate = new long[] {100, 500, 200, 500, 200, 500};domingo, 21 de outubro de 12
  • 142. Propriedade vibrate do Notification notification.vibrate = new long[] {100, 500, 200, 500, 200, 500};domingo, 21 de outubro de 12
  • 143. Propriedade vibrate do Notification Pausa notification.vibrate = new long[] {100, 500, 200, 500, 200, 500};domingo, 21 de outubro de 12
  • 144. Propriedade vibrate do Notification Pausa notification.vibrate = new long[] {100, 500, 200, 500, 200, 500};domingo, 21 de outubro de 12
  • 145. Propriedade vibrate do Notification Pausa Vibração notification.vibrate = new long[] {100, 500, 200, 500, 200, 500};domingo, 21 de outubro de 12
  • 146. Propriedade vibrate do Notification Pausa Vibração notification.vibrate = new long[] {100, 500, 200, 500, 200, 500};domingo, 21 de outubro de 12
  • 147. Propriedade vibrate do Notification Pausa Vibração Pausa notification.vibrate = new long[] {100, 500, 200, 500, 200, 500};domingo, 21 de outubro de 12
  • 148. Propriedade vibrate do Notification Pausa Vibração Pausa notification.vibrate = new long[] {100, 500, 200, 500, 200, 500};domingo, 21 de outubro de 12
  • 149. Propriedade vibrate do Notification Pausa Vibração Pausa Vibração notification.vibrate = new long[] {100, 500, 200, 500, 200, 500};domingo, 21 de outubro de 12
  • 150. Propriedade vibrate do Notification Pausa Vibração Pausa Vibração notification.vibrate = new long[] {100, 500, 200, 500, 200, 500};domingo, 21 de outubro de 12
  • 151. Propriedade vibrate do Notification Pausa Vibração Pausa Vibração Pausa notification.vibrate = new long[] {100, 500, 200, 500, 200, 500};domingo, 21 de outubro de 12
  • 152. Propriedade vibrate do Notification Pausa Vibração Pausa Vibração Pausa notification.vibrate = new long[] {100, 500, 200, 500, 200, 500};domingo, 21 de outubro de 12
  • 153. Propriedade vibrate do Notification Pausa Vibração Pausa Vibração Pausa Pausa notification.vibrate = new long[] {100, 500, 200, 500, 200, 500};domingo, 21 de outubro de 12
  • 154. domingo, 21 de outubro de 12
  • 155. domingo, 21 de outubro de 12
  • 156. Porque não usar uma simples Thread?domingo, 21 de outubro de 12
  • 157. Threaddomingo, 21 de outubro de 12
  • 158. domingo, 21 de outubro de 12
  • 159. domingo, 21 de outubro de 12
  • 160. domingo, 21 de outubro de 12
  • 161. domingo, 21 de outubro de 12
  • 162. Por isso usamos o service!domingo, 21 de outubro de 12
  • 163. O que é necessário?domingo, 21 de outubro de 12
  • 164. Criar uma classe que herde de Service e implemente Runnabledomingo, 21 de outubro de 12
  • 165. Primeiro criar uma tela com um botão...domingo, 21 de outubro de 12
  • 166. Definir no manifest o serviço <service android:name=".ExemploService"> <intent-filter> <action android:name="SERVICE1"/> </intent-filter> </service>domingo, 21 de outubro de 12
  • 167. private Button btnExecutarServico; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnExecutarServico = (Button) findViewById(R.activity_main.btnExecutarServico); btnExecutarServico.setOnClickListener(this); } @Override public void onClick(View v) { Intent intent = new Intent("SERVICE1"); startService(intent); }domingo, 21 de outubro de 12
  • 168. public class ExemploService extends Service implements Runnable { @Override public void onCreate() { super.onCreate(); new Thread(this).start(); } @Override public IBinder onBind(Intent intent) { // Não queremos interagir com o serviço... return null; } @Override public void run() { int contador = 1; Looper.prepare(); while (true) { Log.i("ExemploService","Oi, sou um serviço! Numero " + contador); contador++; try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } } }}domingo, 21 de outubro de 12