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

Like this? Share it with your network

Share

Aula android 02.pdf

on

  • 2,566 views

 

Statistics

Views

Total Views
2,566
Views on SlideShare
2,566
Embed Views
0

Actions

Likes
0
Downloads
245
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Aula android 02.pdf Presentation 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