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
Top Related