Aula android 02.pdf

2,864 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,864
On SlideShare
0
From Embeds
0
Number of Embeds
16
Actions
Shares
0
Downloads
258
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Aula android 02.pdf

  1. 1. domingo, 21 de outubro de 12
  2. 2. Carlos Cavalcanti @CarlosCaval contato@carloscavalcanti.comdomingo, 21 de outubro de 12
  3. 3. Fragmentaçãodomingo, 21 de outubro de 12
  4. 4. Fragmentaçãodomingo, 21 de outubro de 12
  5. 5. domingo, 21 de outubro de 12
  6. 6. domingo, 21 de outubro de 12
  7. 7. domingo, 21 de outubro de 12
  8. 8. domingo, 21 de outubro de 12
  9. 9. Extra! Palestra sobre fragments http://www.youtube.com/watch?v=A3z5TO8COZM Fragmentsdomingo, 21 de outubro de 12
  10. 10. domingo, 21 de outubro de 12
  11. 11. Troca de informações entre telasdomingo, 21 de outubro de 12
  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. 13. putExtra()domingo, 21 de outubro de 12
  14. 14. get?Extra()domingo, 21 de outubro de 12
  15. 15. get?Extra() intent.getIntExtra(name, defaultValue)domingo, 21 de outubro de 12
  16. 16. get?Extra() intent.getIntExtra(name, defaultValue) intent.getStringExtra(name)domingo, 21 de outubro de 12
  17. 17. get?Extra() intent.getIntExtra(name, defaultValue) intent.getLongExtra(name, defaultValue) intent.getStringExtra(name)domingo, 21 de outubro de 12
  18. 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. 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. 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. 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. 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. 23. domingo, 21 de outubro de 12
  24. 24. logcatdomingo, 21 de outubro de 12
  25. 25. domingo, 21 de outubro de 12
  26. 26. domingo, 21 de outubro de 12
  27. 27. domingo, 21 de outubro de 12
  28. 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. 29. Filtragemdomingo, 21 de outubro de 12
  30. 30. Filtragemdomingo, 21 de outubro de 12
  31. 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. 32. Exercício • Logar os eventos da activitydomingo, 21 de outubro de 12
  33. 33. Ciclo de vida da activitydomingo, 21 de outubro de 12
  34. 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. 35. Componentes de teladomingo, 21 de outubro de 12
  36. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 50. QuickContactBadgedomingo, 21 de outubro de 12
  51. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 63. Layoutsdomingo, 21 de outubro de 12
  64. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 74. domingo, 21 de outubro de 12
  75. 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. 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. 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. 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. 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. 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. 81. Peso - weightdomingo, 21 de outubro de 12
  82. 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. 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. 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. 85. Quanto maior o weight maior será sua importância (peso)domingo, 21 de outubro de 12
  86. 86. TableLayout • Este é usado para organizar os componentes em uma tabela, com linhas e colunasdomingo, 21 de outubro de 12
  87. 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. 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. 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. 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. 91. BroadcastReceiverdomingo, 21 de outubro de 12
  92. 92. O que é BroadcastReceiver ?domingo, 21 de outubro de 12
  93. 93. Ela é usada para responder a determinados eventos.domingo, 21 de outubro de 12
  94. 94. Por exemplo...domingo, 21 de outubro de 12
  95. 95. domingo, 21 de outubro de 12
  96. 96. domingo, 21 de outubro de 12
  97. 97. domingo, 21 de outubro de 12
  98. 98. domingo, 21 de outubro de 12
  99. 99. domingo, 21 de outubro de 12
  100. 100. Como implementar?domingo, 21 de outubro de 12
  101. 101. Primeiramente é necessário criar uma classe que herde do BroadcastReceiverdomingo, 21 de outubro de 12
  102. 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. 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. 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. 105. Além disso... Para configurar o BroadcastReceiver é necessário utilizar a tag <receiver> no arquivo manifest.domingo, 21 de outubro de 12
  106. 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. 107. domingo, 21 de outubro de 12
  108. 108. Notificationdomingo, 21 de outubro de 12
  109. 109. O que é Notification ?domingo, 21 de outubro de 12
  110. 110. domingo, 21 de outubro de 12
  111. 111. O que é necessário?domingo, 21 de outubro de 12
  112. 112. Criar umdomingo, 21 de outubro de 12
  113. 113. Criar um Notificationdomingo, 21 de outubro de 12
  114. 114. Criar um NotificationManager Notificationdomingo, 21 de outubro de 12
  115. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 125. domingo, 21 de outubro de 12
  126. 126. domingo, 21 de outubro de 12
  127. 127. domingo, 21 de outubro de 12
  128. 128. domingo, 21 de outubro de 12
  129. 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. 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. 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. 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. 133. Ao pressionar a notificação ela não está sumindo!!!!domingo, 21 de outubro de 12
  134. 134. É necessário mandar fecha-la em algum momento.domingo, 21 de outubro de 12
  135. 135. Através do método cancel() do NotificationManagerdomingo, 21 de outubro de 12
  136. 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. 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. 138. É possível...domingo, 21 de outubro de 12
  139. 139. É possível...domingo, 21 de outubro de 12
  140. 140. É possível... fazer o celular vibrar!domingo, 21 de outubro de 12
  141. 141. Propriedade vibrate do Notification notification.vibrate = new long[] {100, 500, 200, 500, 200, 500};domingo, 21 de outubro de 12
  142. 142. Propriedade vibrate do Notification notification.vibrate = new long[] {100, 500, 200, 500, 200, 500};domingo, 21 de outubro de 12
  143. 143. Propriedade vibrate do Notification Pausa notification.vibrate = new long[] {100, 500, 200, 500, 200, 500};domingo, 21 de outubro de 12
  144. 144. Propriedade vibrate do Notification Pausa notification.vibrate = new long[] {100, 500, 200, 500, 200, 500};domingo, 21 de outubro de 12
  145. 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. 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. 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. 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. 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. 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. 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. 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. 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. 154. domingo, 21 de outubro de 12
  155. 155. domingo, 21 de outubro de 12
  156. 156. Porque não usar uma simples Thread?domingo, 21 de outubro de 12
  157. 157. Threaddomingo, 21 de outubro de 12
  158. 158. domingo, 21 de outubro de 12
  159. 159. domingo, 21 de outubro de 12
  160. 160. domingo, 21 de outubro de 12
  161. 161. domingo, 21 de outubro de 12
  162. 162. Por isso usamos o service!domingo, 21 de outubro de 12
  163. 163. O que é necessário?domingo, 21 de outubro de 12
  164. 164. Criar uma classe que herde de Service e implemente Runnabledomingo, 21 de outubro de 12
  165. 165. Primeiro criar uma tela com um botão...domingo, 21 de outubro de 12
  166. 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. 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. 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

×