Aula android 02.pdf

Preview:

Citation preview

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!

Fragments

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

Palestra sobre 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

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

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

MainActivity

SegundaActivity

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.getStringExtra(name)

intent.getLongExtra(name, defaultValue)

domingo, 21 de outubro de 12

get?Extra()

intent.getIntExtra(name, defaultValue)

intent.getStringExtra(name)

intent.getLongExtra(name, defaultValue)

intent.getBooleanExtra(name, defaultValue)

domingo, 21 de outubro de 12

get?Extra()

intent.getIntExtra(name, defaultValue)

intent.getStringExtra(name)

intent.getLongExtra(name, defaultValue)

intent.getBooleanExtra(name, defaultValue)

intent.getFloatExtra(name, defaultValue)

domingo, 21 de outubro de 12

get?Extra()

intent.getIntExtra(name, defaultValue)

intent.getStringExtra(name)

intent.getLongExtra(name, defaultValue)

intent.getBooleanExtra(name, defaultValue)

intent.getFloatExtra(name, defaultValue)

intent.getFloatArrayExtra(name)

domingo, 21 de outubro de 12

get?Extra()

intent.getIntExtra(name, defaultValue)

intent.getStringExtra(name)

intent.getLongExtra(name, defaultValue)

intent.getBooleanExtra(name, defaultValue)

intent.getFloatExtra(name, defaultValue)

intent.getFloatArrayExtra(name)

intent.getIntArrayExtra(name)

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

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

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

MainActivity

SegundaActivity

domingo, 21 de outubro de 12

domingo, 21 de outubro de 12

logcatdomingo, 21 de outubro de 12

domingo, 21 de outubro de 12

domingo, 21 de outubro de 12

domingo, 21 de outubro de 12

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");

import android.util.Log;

domingo, 21 de outubro de 12

Filtragem

domingo, 21 de outubro de 12

Filtragem

domingo, 21 de outubro de 12

Nivel Sigla Cor

Debug D azul

Verbose V preto

Info I verde

Warn W laranja

Error E vermelho

Tipos de logs e suas cores

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 onStart() { super.onStart(); Log.i("Teste", "onStart"); } @Override protected void onRestart() { super.onRestart(); Log.i("Teste", "onRestart"); }

@Override protected void onResume() { super.onResume(); Log.i("Teste", "onResume"); } @Override protected void onPause() { super.onPause(); Log.i("Teste", "onPause"); } @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

• 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

Dica

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

DicaRadioButton radio0 = (RadioButton) findViewById(R.id.radio0);if (radio0.isChecked()) ...

domingo, 21 de outubro de 12

Layouts

domingo, 21 de outubro de 12

Altura e largura

Atributo Descriçãoandroid: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 larguraAtributo 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

• E s t e é u s a d o p a r a o r g a n i z a r o s 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çãoandroid: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

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

Além disso...

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

Notification

NotificationManager

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

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

PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, TelaParaNotificacaoActivity.class), 0);

domingo, 21 de outubro de 12

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

notification.setLatestEventInfo(this, "Titulo", "Conteúdo", 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

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

Propriedade vibrate do Notification

domingo, 21 de outubro de 12

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

Propriedade vibrate do Notification

domingo, 21 de outubro de 12

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

Propriedade vibrate do Notification

Pausa

domingo, 21 de outubro de 12

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

Propriedade vibrate do Notification

Pausa

domingo, 21 de outubro de 12

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

Propriedade vibrate do Notification

Pausa Vibração

domingo, 21 de outubro de 12

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

Propriedade vibrate do Notification

Pausa Vibração

domingo, 21 de outubro de 12

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

Propriedade vibrate do Notification

Pausa Vibração Pausa

domingo, 21 de outubro de 12

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

Propriedade vibrate do Notification

Pausa Vibração Pausa

domingo, 21 de outubro de 12

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

Propriedade vibrate do Notification

Pausa Vibração Pausa Vibração

domingo, 21 de outubro de 12

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

Propriedade vibrate do Notification

Pausa Vibração Pausa Vibração

domingo, 21 de outubro de 12

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

Propriedade vibrate do Notification

Pausa Vibração Pausa Vibração Pausa

domingo, 21 de outubro de 12

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

Propriedade vibrate do Notification

Pausa Vibração Pausa Vibração Pausa

domingo, 21 de outubro de 12

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

Propriedade vibrate do Notification

Pausa Vibração Pausa Vibração Pausa Pausa

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