O documento discute vários componentes de interface do usuário em Android, incluindo TextView, CheckBox, RadioButton, ProgressBar, EditText, ImageView e ImageButton. Fornece exemplos de código XML para declarar esses componentes em layouts e explica brevemente como cada um funciona.
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
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
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
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
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
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
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
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
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