SlideShare una empresa de Scribd logo
1 de 168
Descargar para leer sin conexión
domingo, 21 de outubro de 12
Carlos Cavalcanti




                           @CarlosCaval   contato@carloscavalcanti.com


domingo, 21 de outubro de 12
Fragmentação




domingo, 21 de outubro de 12
Fragmentação




domingo, 21 de outubro de 12
domingo, 21 de outubro de 12
domingo, 21 de outubro de 12
domingo, 21 de outubro de 12
domingo, 21 de outubro de 12
Extra!

      Palestra sobre fragments

                     http://www.youtube.com/watch?v=A3z5TO8COZM




                                                       Fragments
domingo, 21 de outubro de 12
domingo, 21 de outubro de 12
Troca de informações entre telas


domingo, 21 de outubro de 12
MainActivity
String mensagemQualquer = "Olá!";
Intent intent = new Intent(this, SegundaActivity.class);
intent.putExtra("mensagem", mensagemQualquer);
startActivity(intent);




SegundaActivity
Intent intent = getIntent();
String mensagem = intent.getStringExtra("mensagem");



domingo, 21 de outubro de 12
putExtra()
domingo, 21 de outubro de 12
get?Extra()




domingo, 21 de outubro de 12
get?Extra()


          intent.getIntExtra(name, defaultValue)




domingo, 21 de outubro de 12
get?Extra()


          intent.getIntExtra(name, defaultValue)




           intent.getStringExtra(name)




domingo, 21 de outubro de 12
get?Extra()


          intent.getIntExtra(name, defaultValue)



          intent.getLongExtra(name, defaultValue)


           intent.getStringExtra(name)




domingo, 21 de outubro de 12
get?Extra()


          intent.getIntExtra(name, defaultValue)



          intent.getLongExtra(name, defaultValue)

           intent.getBooleanExtra(name, defaultValue)
           intent.getStringExtra(name)




domingo, 21 de outubro de 12
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
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
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
•       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
        textView
MainActivity

String mensagemQualquer = "Olá!";
Intent intent = new Intent(this, SegundaActivity.class);
intent.putExtra("mensagem", mensagemQualquer);
startActivity(intent);


SegundaActivity

Intent intent = getIntent();
String mensagem = intent.getStringExtra("mensagem");



domingo, 21 de outubro de 12
domingo, 21 de outubro de 12
logcat
domingo, 21 de outubro de 12
domingo, 21 de outubro de 12
domingo, 21 de outubro de 12
domingo, 21 de outubro de 12
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
Filtragem




domingo, 21 de outubro de 12
Filtragem




domingo, 21 de outubro de 12
Tipos de logs e suas cores
      Nivel                    Sigla     Cor
    Debug                       D        azul
  Verbose                       V       preto
        Info                     I      verde
     Warn                       W       laranja
      Error                     E      vermelho

domingo, 21 de outubro de 12
Exercício

                 •      Logar os eventos da activity




domingo, 21 de outubro de 12
Ciclo
                               de vida
                                 da
                               activity

domingo, 21 de outubro de 12
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
Componentes de tela



domingo, 21 de outubro de 12
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
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
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
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
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
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
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
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
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
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
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
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
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
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
QuickContactBadge




domingo, 21 de outubro de 12
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
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
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
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
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
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
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
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
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
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-la


domingo, 21 de outubro de 12
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-la


domingo, 21 de outubro de 12
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-la


domingo, 21 de outubro de 12
Layouts




domingo, 21 de outubro de 12
Altura e largura

                               Atributo         Descrição
          android:layout_height           Especifica a altura de um
                                          componente

          android:layout_width            Especifica a largura de um
                                          componente




domingo, 21 de outubro de 12
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
        componente

domingo, 21 de outubro de 12
Valores para altura e largura
  Atributo                                        Descrição

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 componente



domingo, 21 de outubro de 12
<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
<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
<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
<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
<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
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
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
domingo, 21 de outubro de 12
<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
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
LinearLayout
      • Este layout é usado para organizar os
        componentes na vertical ou horizontal
        através do atributo android:orientation.




domingo, 21 de outubro de 12
<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
<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
<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
Peso - weight




domingo, 21 de outubro de 12
<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
<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
<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
Quanto maior o weight maior
                       será sua importância (peso)




domingo, 21 de outubro de 12
TableLayout
      • Este é usado para organizar os
        componentes em uma tabela, com linhas e
        colunas




domingo, 21 de outubro de 12
<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
RelativeLayout
      • Este Permite posicionar um componente
        relativo a outro, por exemplo, abaixo, acima
        ou ao lado de um componente já existente




domingo, 21 de outubro de 12
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
                                            componente




domingo, 21 de outubro de 12
<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
BroadcastReceiver




domingo, 21 de outubro de 12
O que é BroadcastReceiver ?




domingo, 21 de outubro de 12
Ela é usada para responder a
      determinados eventos.
domingo, 21 de outubro de 12
Por exemplo...



domingo, 21 de outubro de 12
domingo, 21 de outubro de 12
domingo, 21 de outubro de 12
domingo, 21 de outubro de 12
domingo, 21 de outubro de 12
domingo, 21 de outubro de 12
Como implementar?




domingo, 21 de outubro de 12
Primeiramente é necessário criar uma
      classe que herde do BroadcastReceiver




domingo, 21 de outubro de 12
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
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
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
Além disso...



      Para configurar o BroadcastReceiver é
      necessário utilizar a tag <receiver> no
      arquivo manifest.




domingo, 21 de outubro de 12
<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
domingo, 21 de outubro de 12
Notification




domingo, 21 de outubro de 12
O que é Notification ?




domingo, 21 de outubro de 12
domingo, 21 de outubro de 12
O que é necessário?




domingo, 21 de outubro de 12
Criar um




domingo, 21 de outubro de 12
Criar um




                               Notification


domingo, 21 de outubro de 12
Criar um


                    NotificationManager



                               Notification


domingo, 21 de outubro de 12
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
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
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
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
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
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
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
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
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
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
domingo, 21 de outubro de 12
domingo, 21 de outubro de 12
domingo, 21 de outubro de 12
domingo, 21 de outubro de 12
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
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 fornecida



domingo, 21 de outubro de 12
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 PendingIntent




domingo, 21 de outubro de 12
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
Ao pressionar a notificação ela não está sumindo!!!!




domingo, 21 de outubro de 12
É necessário mandar fecha-la em algum momento.


domingo, 21 de outubro de 12
Através do método cancel() do
                NotificationManager
domingo, 21 de outubro de 12
@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
@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
É possível...




domingo, 21 de outubro de 12
É possível...




domingo, 21 de outubro de 12
É possível...




   fazer o celular vibrar!
domingo, 21 de outubro de 12
Propriedade vibrate do Notification




        notification.vibrate = new long[] {100, 500, 200, 500, 200, 500};




domingo, 21 de outubro de 12
Propriedade vibrate do Notification




        notification.vibrate = new long[] {100, 500, 200, 500, 200, 500};




domingo, 21 de outubro de 12
Propriedade vibrate do Notification



                                          Pausa




        notification.vibrate = new long[] {100, 500, 200, 500, 200, 500};




domingo, 21 de outubro de 12
Propriedade vibrate do Notification



                                          Pausa




        notification.vibrate = new long[] {100, 500, 200, 500, 200, 500};




domingo, 21 de outubro de 12
Propriedade vibrate do Notification



                                          Pausa   Vibração




        notification.vibrate = new long[] {100, 500, 200, 500, 200, 500};




domingo, 21 de outubro de 12
Propriedade vibrate do Notification



                                          Pausa   Vibração




        notification.vibrate = new long[] {100, 500, 200, 500, 200, 500};




domingo, 21 de outubro de 12
Propriedade vibrate do Notification



                                          Pausa   Vibração Pausa




        notification.vibrate = new long[] {100, 500, 200, 500, 200, 500};




domingo, 21 de outubro de 12
Propriedade vibrate do Notification



                                          Pausa   Vibração Pausa




        notification.vibrate = new long[] {100, 500, 200, 500, 200, 500};




domingo, 21 de outubro de 12
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
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
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
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
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
domingo, 21 de outubro de 12
domingo, 21 de outubro de 12
Porque não usar uma simples
                   Thread?




domingo, 21 de outubro de 12
Thread



domingo, 21 de outubro de 12
domingo, 21 de outubro de 12
domingo, 21 de outubro de 12
domingo, 21 de outubro de 12
domingo, 21 de outubro de 12
Por isso usamos o service!




domingo, 21 de outubro de 12
O que é necessário?




domingo, 21 de outubro de 12
Criar uma classe que herde de
         Service e implemente Runnable




domingo, 21 de outubro de 12
Primeiro criar uma tela com um botão...

domingo, 21 de outubro de 12
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
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
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

Más contenido relacionado

La actualidad más candente

Ajax O Objeto Xml Http Request Parte 3
Ajax   O Objeto Xml Http Request   Parte 3Ajax   O Objeto Xml Http Request   Parte 3
Ajax O Objeto Xml Http Request Parte 3infinitopublicidade
 
Jython no JavaOne Latin America 2011
Jython no JavaOne Latin America 2011Jython no JavaOne Latin America 2011
Jython no JavaOne Latin America 2011Luciano Ramalho
 
Acesso a Banco de Dados em Java usando JDBC
Acesso a Banco de Dados em Java usando JDBCAcesso a Banco de Dados em Java usando JDBC
Acesso a Banco de Dados em Java usando JDBCLuiz Ricardo Silva
 
Jdbc, JAVA DATABASE CONNECTIVITY
Jdbc, JAVA DATABASE CONNECTIVITYJdbc, JAVA DATABASE CONNECTIVITY
Jdbc, JAVA DATABASE CONNECTIVITYraquelcarsi
 
Javascript não é Java+Script (TDC Floripa 2012)
Javascript não é Java+Script (TDC Floripa 2012)Javascript não é Java+Script (TDC Floripa 2012)
Javascript não é Java+Script (TDC Floripa 2012)Rodrigo Vieira
 
Web2py: Desenvolvimento Ágil de Aplicações Web com Python
Web2py: Desenvolvimento Ágil de Aplicações Web com PythonWeb2py: Desenvolvimento Ágil de Aplicações Web com Python
Web2py: Desenvolvimento Ágil de Aplicações Web com Pythonchackero
 
Combatendo code smells em aplicações Java
Combatendo code smells em aplicações JavaCombatendo code smells em aplicações Java
Combatendo code smells em aplicações JavaEmmanuel Neri
 
Persistência de Dados no SQLite com Room
Persistência de Dados no SQLite com RoomPersistência de Dados no SQLite com Room
Persistência de Dados no SQLite com RoomNelson Glauber Leal
 
Java - Introdução a banco de dados
Java - Introdução a banco de dadosJava - Introdução a banco de dados
Java - Introdução a banco de dadosSérgio Souza Costa
 

La actualidad más candente (20)

Fundamentos de JDBC
Fundamentos de JDBCFundamentos de JDBC
Fundamentos de JDBC
 
Javascript
JavascriptJavascript
Javascript
 
Ajax O Objeto Xml Http Request Parte 3
Ajax   O Objeto Xml Http Request   Parte 3Ajax   O Objeto Xml Http Request   Parte 3
Ajax O Objeto Xml Http Request Parte 3
 
Artigoajax
ArtigoajaxArtigoajax
Artigoajax
 
Ajax em java
Ajax em javaAjax em java
Ajax em java
 
Jython no JavaOne Latin America 2011
Jython no JavaOne Latin America 2011Jython no JavaOne Latin America 2011
Jython no JavaOne Latin America 2011
 
Acesso a Banco de Dados em Java usando JDBC
Acesso a Banco de Dados em Java usando JDBCAcesso a Banco de Dados em Java usando JDBC
Acesso a Banco de Dados em Java usando JDBC
 
Python 01
Python 01Python 01
Python 01
 
Prolog 04 - Regras
Prolog 04 - RegrasProlog 04 - Regras
Prolog 04 - Regras
 
Jdbc, JAVA DATABASE CONNECTIVITY
Jdbc, JAVA DATABASE CONNECTIVITYJdbc, JAVA DATABASE CONNECTIVITY
Jdbc, JAVA DATABASE CONNECTIVITY
 
Javascript não é Java+Script (TDC Floripa 2012)
Javascript não é Java+Script (TDC Floripa 2012)Javascript não é Java+Script (TDC Floripa 2012)
Javascript não é Java+Script (TDC Floripa 2012)
 
Web2py: Desenvolvimento Ágil de Aplicações Web com Python
Web2py: Desenvolvimento Ágil de Aplicações Web com PythonWeb2py: Desenvolvimento Ágil de Aplicações Web com Python
Web2py: Desenvolvimento Ágil de Aplicações Web com Python
 
Python 04
Python 04Python 04
Python 04
 
JQuery
JQuery JQuery
JQuery
 
Combatendo code smells em aplicações Java
Combatendo code smells em aplicações JavaCombatendo code smells em aplicações Java
Combatendo code smells em aplicações Java
 
Persistência de Dados no SQLite com Room
Persistência de Dados no SQLite com RoomPersistência de Dados no SQLite com Room
Persistência de Dados no SQLite com Room
 
Java 16 Jdbc
Java 16 JdbcJava 16 Jdbc
Java 16 Jdbc
 
Aula Prolog - 05
Aula Prolog - 05Aula Prolog - 05
Aula Prolog - 05
 
Java - Introdução a banco de dados
Java - Introdução a banco de dadosJava - Introdução a banco de dados
Java - Introdução a banco de dados
 
Aula Prolog 02
Aula Prolog 02Aula Prolog 02
Aula Prolog 02
 

Destacado

From Text To Reasoning - Marko Grobelnik - SWANK Workshop Stanford - 16 Apr 2014
From Text To Reasoning - Marko Grobelnik - SWANK Workshop Stanford - 16 Apr 2014From Text To Reasoning - Marko Grobelnik - SWANK Workshop Stanford - 16 Apr 2014
From Text To Reasoning - Marko Grobelnik - SWANK Workshop Stanford - 16 Apr 2014Marko Grobelnik
 
Seo thời tam quốc
Seo thời tam quốcSeo thời tam quốc
Seo thời tam quốcLong Hacki
 
Innovation Imperative for Indian Software Services Companies
Innovation Imperative for Indian Software Services Companies Innovation Imperative for Indian Software Services Companies
Innovation Imperative for Indian Software Services Companies Innomantra
 
Glocal Learning Quests_Catalysts for Change Zone of Future Innovation
Glocal Learning Quests_Catalysts for Change Zone of Future InnovationGlocal Learning Quests_Catalysts for Change Zone of Future Innovation
Glocal Learning Quests_Catalysts for Change Zone of Future InnovationInstitute for the Future
 
Catalysts for Change - Zones of Future Innovation Project Overview
Catalysts for Change - Zones of Future Innovation Project Overview Catalysts for Change - Zones of Future Innovation Project Overview
Catalysts for Change - Zones of Future Innovation Project Overview Institute for the Future
 
3 -Day end of the year slide show.
3 -Day end of the year slide show.3 -Day end of the year slide show.
3 -Day end of the year slide show.cloverpatch
 
Half Day Signal Sharing Workshop Process and Templates
Half Day Signal Sharing Workshop Process and TemplatesHalf Day Signal Sharing Workshop Process and Templates
Half Day Signal Sharing Workshop Process and TemplatesInstitute for the Future
 
Adicción o Libertad. El bienestar emocional y las adicciones
Adicción o Libertad. El bienestar emocional y las adiccionesAdicción o Libertad. El bienestar emocional y las adicciones
Adicción o Libertad. El bienestar emocional y las adiccionesLeocadio Martin Borges
 
Presentation Purdue Springer Lecture on Economics & Innovation March 2016
Presentation Purdue Springer Lecture on Economics & Innovation March 2016Presentation Purdue Springer Lecture on Economics & Innovation March 2016
Presentation Purdue Springer Lecture on Economics & Innovation March 2016Linx Partners
 
Global Diaspora Services_Catalysts For Change Zone of Future Innovtion
Global Diaspora Services_Catalysts For Change Zone of Future InnovtionGlobal Diaspora Services_Catalysts For Change Zone of Future Innovtion
Global Diaspora Services_Catalysts For Change Zone of Future InnovtionInstitute for the Future
 
Patents in a Knowledge Economy 2011, Bangalore, India
Patents in a Knowledge Economy 2011, Bangalore, IndiaPatents in a Knowledge Economy 2011, Bangalore, India
Patents in a Knowledge Economy 2011, Bangalore, IndiaInnomantra
 
Samenleving 2013 100610
Samenleving 2013 100610Samenleving 2013 100610
Samenleving 2013 100610Cees Corstanje
 
Rural Youth Stewards_Catalysts For Change Zone of Future Innovtion
Rural Youth Stewards_Catalysts For Change Zone of Future InnovtionRural Youth Stewards_Catalysts For Change Zone of Future Innovtion
Rural Youth Stewards_Catalysts For Change Zone of Future InnovtionInstitute for the Future
 
Know Your Lineworker_Catalysts For Change Zone of Future Innovtion
Know Your Lineworker_Catalysts For Change Zone of Future InnovtionKnow Your Lineworker_Catalysts For Change Zone of Future Innovtion
Know Your Lineworker_Catalysts For Change Zone of Future InnovtionInstitute for the Future
 
Networked Commerce_Catalysts For Change Zone of Future Innovtion
Networked Commerce_Catalysts For Change Zone of Future InnovtionNetworked Commerce_Catalysts For Change Zone of Future Innovtion
Networked Commerce_Catalysts For Change Zone of Future InnovtionInstitute for the Future
 
Peer-to-Peer Energy Sales_Catalysts For Change Zone of Future Innovtion
Peer-to-Peer Energy Sales_Catalysts For Change Zone of Future InnovtionPeer-to-Peer Energy Sales_Catalysts For Change Zone of Future Innovtion
Peer-to-Peer Energy Sales_Catalysts For Change Zone of Future InnovtionInstitute for the Future
 

Destacado (20)

From Text To Reasoning - Marko Grobelnik - SWANK Workshop Stanford - 16 Apr 2014
From Text To Reasoning - Marko Grobelnik - SWANK Workshop Stanford - 16 Apr 2014From Text To Reasoning - Marko Grobelnik - SWANK Workshop Stanford - 16 Apr 2014
From Text To Reasoning - Marko Grobelnik - SWANK Workshop Stanford - 16 Apr 2014
 
Seo thời tam quốc
Seo thời tam quốcSeo thời tam quốc
Seo thời tam quốc
 
Innovation Imperative for Indian Software Services Companies
Innovation Imperative for Indian Software Services Companies Innovation Imperative for Indian Software Services Companies
Innovation Imperative for Indian Software Services Companies
 
Glocal Learning Quests_Catalysts for Change Zone of Future Innovation
Glocal Learning Quests_Catalysts for Change Zone of Future InnovationGlocal Learning Quests_Catalysts for Change Zone of Future Innovation
Glocal Learning Quests_Catalysts for Change Zone of Future Innovation
 
Catalysts for Change - Zones of Future Innovation Project Overview
Catalysts for Change - Zones of Future Innovation Project Overview Catalysts for Change - Zones of Future Innovation Project Overview
Catalysts for Change - Zones of Future Innovation Project Overview
 
3 -Day end of the year slide show.
3 -Day end of the year slide show.3 -Day end of the year slide show.
3 -Day end of the year slide show.
 
Metrar group protocolo de iluminacion -----2015
Metrar group   protocolo de iluminacion -----2015Metrar group   protocolo de iluminacion -----2015
Metrar group protocolo de iluminacion -----2015
 
Half Day Signal Sharing Workshop Process and Templates
Half Day Signal Sharing Workshop Process and TemplatesHalf Day Signal Sharing Workshop Process and Templates
Half Day Signal Sharing Workshop Process and Templates
 
Adicción o Libertad. El bienestar emocional y las adicciones
Adicción o Libertad. El bienestar emocional y las adiccionesAdicción o Libertad. El bienestar emocional y las adicciones
Adicción o Libertad. El bienestar emocional y las adicciones
 
Presentation Purdue Springer Lecture on Economics & Innovation March 2016
Presentation Purdue Springer Lecture on Economics & Innovation March 2016Presentation Purdue Springer Lecture on Economics & Innovation March 2016
Presentation Purdue Springer Lecture on Economics & Innovation March 2016
 
Global Diaspora Services_Catalysts For Change Zone of Future Innovtion
Global Diaspora Services_Catalysts For Change Zone of Future InnovtionGlobal Diaspora Services_Catalysts For Change Zone of Future Innovtion
Global Diaspora Services_Catalysts For Change Zone of Future Innovtion
 
Patents in a Knowledge Economy 2011, Bangalore, India
Patents in a Knowledge Economy 2011, Bangalore, IndiaPatents in a Knowledge Economy 2011, Bangalore, India
Patents in a Knowledge Economy 2011, Bangalore, India
 
EzMate 401 Arise Biotech
EzMate 401 Arise BiotechEzMate 401 Arise Biotech
EzMate 401 Arise Biotech
 
Final Assignment
Final AssignmentFinal Assignment
Final Assignment
 
Samenleving 2013 100610
Samenleving 2013 100610Samenleving 2013 100610
Samenleving 2013 100610
 
Rural Youth Stewards_Catalysts For Change Zone of Future Innovtion
Rural Youth Stewards_Catalysts For Change Zone of Future InnovtionRural Youth Stewards_Catalysts For Change Zone of Future Innovtion
Rural Youth Stewards_Catalysts For Change Zone of Future Innovtion
 
Know Your Lineworker_Catalysts For Change Zone of Future Innovtion
Know Your Lineworker_Catalysts For Change Zone of Future InnovtionKnow Your Lineworker_Catalysts For Change Zone of Future Innovtion
Know Your Lineworker_Catalysts For Change Zone of Future Innovtion
 
Networked Commerce_Catalysts For Change Zone of Future Innovtion
Networked Commerce_Catalysts For Change Zone of Future InnovtionNetworked Commerce_Catalysts For Change Zone of Future Innovtion
Networked Commerce_Catalysts For Change Zone of Future Innovtion
 
Peer-to-Peer Energy Sales_Catalysts For Change Zone of Future Innovtion
Peer-to-Peer Energy Sales_Catalysts For Change Zone of Future InnovtionPeer-to-Peer Energy Sales_Catalysts For Change Zone of Future Innovtion
Peer-to-Peer Energy Sales_Catalysts For Change Zone of Future Innovtion
 
Virtual Community Modeling
Virtual Community ModelingVirtual Community Modeling
Virtual Community Modeling
 

Similar a Aula android 02.pdf

Testes de Unidade com JUnit
Testes de Unidade com JUnitTestes de Unidade com JUnit
Testes de Unidade com JUnitelliando dias
 
Palestra Mocks - AgileBrazil 2010
Palestra Mocks - AgileBrazil 2010Palestra Mocks - AgileBrazil 2010
Palestra Mocks - AgileBrazil 2010rafaelferreira
 
Aula actionscript basico
Aula actionscript basicoAula actionscript basico
Aula actionscript basicoWemerson Silva
 
Conexão Java 2012 - Orientação a Objetos das Galáxias
Conexão Java 2012 - Orientação a Objetos das GaláxiasConexão Java 2012 - Orientação a Objetos das Galáxias
Conexão Java 2012 - Orientação a Objetos das GaláxiasMaurício Aniche
 
Java aprendendo linguagem.ppt
Java aprendendo linguagem.pptJava aprendendo linguagem.ppt
Java aprendendo linguagem.pptEmerson Cardoso
 
Curso java 01 - molhando os pés com java
Curso java   01 - molhando os pés com javaCurso java   01 - molhando os pés com java
Curso java 01 - molhando os pés com javaMaurício Linhares
 
JUnit: framework de testes unitários
JUnit: framework de testes unitáriosJUnit: framework de testes unitários
JUnit: framework de testes unitárioselliando dias
 
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor AndroidDesvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Androidjoaobmonteiro
 
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e ArraysEstrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e ArraysLoiane Groner
 
Jug bizus (4)
Jug   bizus (4)Jug   bizus (4)
Jug bizus (4)JugVale
 
Kotlin: conhecendo features de uma linguagem moderna
Kotlin: conhecendo features de uma linguagem modernaKotlin: conhecendo features de uma linguagem moderna
Kotlin: conhecendo features de uma linguagem modernaFabrício Rissetto
 
Design Patterns na Programação de Jogo
Design Patterns na Programação de JogoDesign Patterns na Programação de Jogo
Design Patterns na Programação de JogoBruno Cicanci
 
[Curso Java Basico - Exceptions] Aula 52: criando sua propria exception
[Curso Java Basico - Exceptions] Aula 52: criando sua propria exception[Curso Java Basico - Exceptions] Aula 52: criando sua propria exception
[Curso Java Basico - Exceptions] Aula 52: criando sua propria exceptionLoiane Groner
 
Aprendendo objective c - parte 1
Aprendendo objective c - parte 1Aprendendo objective c - parte 1
Aprendendo objective c - parte 1Alamo Saravali
 
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...Tchelinux
 
Programação Desktop: Revisão Core Java
Programação Desktop: Revisão Core JavaProgramação Desktop: Revisão Core Java
Programação Desktop: Revisão Core JavaElaine Cecília Gatto
 

Similar a Aula android 02.pdf (20)

Testes de Unidade com JUnit
Testes de Unidade com JUnitTestes de Unidade com JUnit
Testes de Unidade com JUnit
 
Palestra Mocks - AgileBrazil 2010
Palestra Mocks - AgileBrazil 2010Palestra Mocks - AgileBrazil 2010
Palestra Mocks - AgileBrazil 2010
 
Git, GitHub e OO
Git, GitHub e OOGit, GitHub e OO
Git, GitHub e OO
 
Aula actionscript basico
Aula actionscript basicoAula actionscript basico
Aula actionscript basico
 
Java hidden features
Java hidden featuresJava hidden features
Java hidden features
 
Conexão Java 2012 - Orientação a Objetos das Galáxias
Conexão Java 2012 - Orientação a Objetos das GaláxiasConexão Java 2012 - Orientação a Objetos das Galáxias
Conexão Java 2012 - Orientação a Objetos das Galáxias
 
Java aprendendo linguagem.ppt
Java aprendendo linguagem.pptJava aprendendo linguagem.ppt
Java aprendendo linguagem.ppt
 
Curso java 01 - molhando os pés com java
Curso java   01 - molhando os pés com javaCurso java   01 - molhando os pés com java
Curso java 01 - molhando os pés com java
 
JUnit: framework de testes unitários
JUnit: framework de testes unitáriosJUnit: framework de testes unitários
JUnit: framework de testes unitários
 
Desvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor AndroidDesvendando as ferramentas e serviços para o desenvolvedor Android
Desvendando as ferramentas e serviços para o desenvolvedor Android
 
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e ArraysEstrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
 
Jug bizus (4)
Jug   bizus (4)Jug   bizus (4)
Jug bizus (4)
 
Jug bizus
Jug   bizusJug   bizus
Jug bizus
 
Kotlin: conhecendo features de uma linguagem moderna
Kotlin: conhecendo features de uma linguagem modernaKotlin: conhecendo features de uma linguagem moderna
Kotlin: conhecendo features de uma linguagem moderna
 
Design Patterns na Programação de Jogo
Design Patterns na Programação de JogoDesign Patterns na Programação de Jogo
Design Patterns na Programação de Jogo
 
Aprenda jQuery 1.3
Aprenda jQuery 1.3Aprenda jQuery 1.3
Aprenda jQuery 1.3
 
[Curso Java Basico - Exceptions] Aula 52: criando sua propria exception
[Curso Java Basico - Exceptions] Aula 52: criando sua propria exception[Curso Java Basico - Exceptions] Aula 52: criando sua propria exception
[Curso Java Basico - Exceptions] Aula 52: criando sua propria exception
 
Aprendendo objective c - parte 1
Aprendendo objective c - parte 1Aprendendo objective c - parte 1
Aprendendo objective c - parte 1
 
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...
 
Programação Desktop: Revisão Core Java
Programação Desktop: Revisão Core JavaProgramação Desktop: Revisão Core Java
Programação Desktop: Revisão Core Java
 

Más de Carlos Cavalcanti

Más de Carlos Cavalcanti (14)

Study jam - dia 1
Study jam  - dia 1Study jam  - dia 1
Study jam - dia 1
 
Hello world ao mundo mobile focado no android
Hello world ao mundo mobile focado no androidHello world ao mundo mobile focado no android
Hello world ao mundo mobile focado no android
 
O mobile no mundo corporativo
O mobile no mundo corporativo O mobile no mundo corporativo
O mobile no mundo corporativo
 
Testes automatizados de interface no Android
Testes automatizados de interface no AndroidTestes automatizados de interface no Android
Testes automatizados de interface no Android
 
Diga hello world ao mundo mobile
Diga hello world ao mundo mobileDiga hello world ao mundo mobile
Diga hello world ao mundo mobile
 
GDG Natal
GDG NatalGDG Natal
GDG Natal
 
Aula android 05
Aula android 05Aula android 05
Aula android 05
 
Aula android 04
Aula android 04Aula android 04
Aula android 04
 
Aula android 03
Aula android 03Aula android 03
Aula android 03
 
Aula android 01.pdf
Aula android 01.pdfAula android 01.pdf
Aula android 01.pdf
 
Introdução a java
Introdução a javaIntrodução a java
Introdução a java
 
Como ganhar dinheiro no mundo mobile?
Como ganhar dinheiro no mundo mobile?Como ganhar dinheiro no mundo mobile?
Como ganhar dinheiro no mundo mobile?
 
Apresentação
ApresentaçãoApresentação
Apresentação
 
Android: Mercado&Desenvolvimento
Android: Mercado&DesenvolvimentoAndroid: Mercado&Desenvolvimento
Android: Mercado&Desenvolvimento
 

Aula android 02.pdf

  • 1. domingo, 21 de outubro de 12
  • 2. Carlos Cavalcanti @CarlosCaval contato@carloscavalcanti.com domingo, 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 Fragments domingo, 21 de outubro de 12
  • 10. domingo, 21 de outubro de 12
  • 11. Troca de informações entre telas domingo, 21 de outubro de 12
  • 12. MainActivity String mensagemQualquer = "Olá!"; Intent intent = new Intent(this, SegundaActivity.class); intent.putExtra("mensagem", mensagemQualquer); startActivity(intent); SegundaActivity Intent 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 textView MainActivity String mensagemQualquer = "Olá!"; Intent intent = new Intent(this, SegundaActivity.class); intent.putExtra("mensagem", mensagemQualquer); startActivity(intent); SegundaActivity Intent intent = getIntent(); String mensagem = intent.getStringExtra("mensagem"); domingo, 21 de outubro de 12
  • 23. domingo, 21 de outubro de 12
  • 24. logcat domingo, 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. Filtragem domingo, 21 de outubro de 12
  • 30. Filtragem domingo, 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 vermelho domingo, 21 de outubro de 12
  • 32. Exercício • Logar os eventos da activity domingo, 21 de outubro de 12
  • 33. Ciclo de vida da activity domingo, 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 tela domingo, 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
  • 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-la domingo, 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-la domingo, 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-la domingo, 21 de outubro de 12
  • 63. Layouts domingo, 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 componente domingo, 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 componente domingo, 21 de outubro de 12
  • 66. Valores para altura e largura Atributo Descrição 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 componente domingo, 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 - weight domingo, 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 colunas domingo, 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á existente domingo, 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 componente domingo, 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
  • 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 BroadcastReceiver domingo, 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. Notification domingo, 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 um domingo, 21 de outubro de 12
  • 113. Criar um Notification domingo, 21 de outubro de 12
  • 114. Criar um NotificationManager Notification domingo, 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 fornecida domingo, 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 PendingIntent domingo, 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 NotificationManager domingo, 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. Thread domingo, 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 Runnable domingo, 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