Aula 07

Propaganda
PDM - Aula07- Ver 01 - 30/05/2017 03:46
Programação de Dispositivos Móveis
Aula 07
Interfaces Gráficas -Widgets








View
TextView
EditText
AutoCompleteTextView
Button
ImageButton
CheckBox
ToggleButton








RadioButton e
RadioGroup
Spinner (combo)
AnalogClock
DigitalClock
Chronometer
DatePicker
TimePicker
ProgressBar
Classe View


A classe para componentes visuais
Desenha na tela através do método onDraw(Canvas)
Widgets



Componentes visuais simples
Subclasses de View
TextView, EditText, ImageView, ProgressBar, etc
Classe ViewGroup e Gerenciadores de Layout



Container invisível que guarda View's
Gerencia a disposição destes componentes na tela
FrameLayout, LinearLayout, etc
Activity's especializadas

ListActivity, TabActivity, MapActivity
Como referenciar recursos no XML
Drawable:

android:src="@drawable/nome_drawable"
Identificadores:


Definição: android:id="@+id/identificador"
Referência: android:layout_below="@id/identificador"
Strings:

android:text="@string/nome_string"
Cores:


Forma direta:android:textColor="#RRGGBB"
Forma indireat: android:textColor="@color/nome_cor"
Página 1 de 16








RatingBar
Toast
ProgressDialog
AlertDialog
Menus e Submenus
LayoutInflater
TabActivity e
TabWidget
ListView e ListActivity
PDM - Aula07- Ver 01 - 30/05/2017 03:46
Estilos:

style="@style/nome_estilo“
Tipos de recursos ainda não abordados serão apresentados quando necessário
Dimensões






px (pixels): Corresponde aos pixels reais da tela
in (polegadas): Baseado no tamanho físico da tela
mm (milímetros): Baseado no tamanho físico da tela
pt (pontos): 1 pt = 1/72 in. Também baseado no tamanho físico
dp/dip(Density-independent Pixels): Unidade abstrata baseada na densidade física da tela, onde 160
dp = 1 in = 25.4 mm. Mantém sempre o mesmo tamanho real, independente da densidade. Exemplo:
0.5 in = 12.7 mm = 80 dp. Em 160 dpi, 80 dp = 80 px, já em 240 dpi, 80 dp = 120 px.
sp(Scale-independent Pixels): Semelhante ao dp/dip,mas também escalado pelo tamanho de fonte
nas preferências do usuário. Recomendável para especificar tamanhos de fonte pois elas serão
ajustadas tanto para densidade da tela quanto para as preferências do usuários.
Interface Gráfica -TextView's



TextView -apresenta texto na tela
EditText -apresenta caixa de edição de texto
AutoCompleteTextView -caixa de edição com auto-complete
Atributos






android:text="@string/..."
android:textColor="@color/..."
android:password="true | false"
android:numeric="integer | signed | decimal"
android:singleLine="true | false"
android:lines -quantas linhas de texto de altura
AutoCompleteTextView


android:completionThreshold="3" -quantidade de caracteres digitados antes aparecer sugestões
setAdapter(ArrayAdapter) -definir lista de opções
Button e ImageButton
Permitem criar botões clicáveis na tela


Button -subclasse de TextView
ImageButton -subclasse de ImageView
Setando imagem via Java e XML




imageButton.setImageResource(R.drawable.image_id)
button.setCompoundDrawablesWithIntrinsicBounds(left,top,right,bottom)
<ImageButton android:src="@drawable/..." ... />
<Button android:drawableLeft="@drawable/..."
android:drawableTop="..."android:drawableRight="..." android:drawableBottom="..." ... />
Detectando clique:

final Button button = (Button) findViewById(R.id.button_id);
Página 2 de 16
PDM - Aula07- Ver 01 - 30/05/2017 03:46
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Perform action on click
}
});
CheckBox e ToggleButton
Botão de dois estados, quepermite marcar um item na tela
CheckBox

android:text="@string/..."
ToggleButton


android:textOn="@string/..."
android:textOff="@string/..."
Métodos




boolean isChecked() -retorna estado
void toggle() -alterna estado
void setChecked(boolean) -define estado
boolen performClick() -simula click chamando o método onClick(..) doOnClickListenerassociado
AlertDialog



Exibe um alerta ao usuário
Conteúdo e botões de escolha personalizados
Classe AlertDialog.Builder para construir alertas







setIcon(int resId): Determina o ícone a ser mostrado
setTitle(String): Determina o título do alerta
setMessage(String): Mensagem a ser mostrada no interior do alerta
setPositiveButton(String, listener): Texto do botão positivo (Sim, Yes, Ok, etc)
setNegativeButton(String, listener): Texto do botão negativo (Não, No, etc)
setItems(String [], listener): Items a serem mostrados para usuário selecionar
setSingleChoiceItems(String [], int checkedItem, listener): Determina lista de RadioButtons a serem
mostrados ao usuário
setCancelable(boolean): Alerta cancelável ou não. Cancelável significa que usuário não pode fechar
com botão voltar.
show(): Exibe o alerta para o usuário
cancel(): Cancela o alerta
Nota: listener é uma instância de DialogInterface.OnClickListener




ProgressDialog

Janela para mostrar o progresso de uma operação
Como usar sem os métodos anteriores



Mostrar o Dialog
o dialog = ProgressDialog.show(contexto, titulo, msg, bool indet);

indet = se é indeterminado ou não (percentual)
Feche o Dialog, quando concluir
o dialog.dismiss();
Alterar o progresso (se indet = true)
o dialog.setProgress(int v) // v entre 0 e 10000
Página 3 de 16
PDM - Aula07- Ver 01 - 30/05/2017 03:46
Criando Aplicação Android (Aula07B)
O aplicativo que vamos desenvolver permitirá o usuário verificar a funcionalidade de alguns Views.
Vamos aprender mais elementos visuais e como se faz a ligação desses elementos do layout xml (main.xml e outros)
com a linguagem de programação Java.
Vamos criar a nossa aplicação “Aula07B”. No Eclipse, faça o seguinte:
1. Clique no menu “File” -> “New” e escolha a opção “Other...”
2. Nas opções que surgiram, selecione “Android Project” e clique em “Next”
A janela “New Android Project” que surgiu serve para que você digite os dados do projeto que será criado.
Preencha-a da seguinte forma:

Project Name: Aula07B

Application name: Aula07B

Package name: br.pdm.aula07bex1

Create Activity: Aula07BActivity

Min SDK Version: 8 (pode definir outro tipo de emulador)

Clique em “Finish”
Resumo dos nomes ao iniciar um projeto:

Project Name - O nome do projeto que aparecerá no Package Explorer do Eclipse.

Application Name - Nome que aparecerá no menu do Android.

Package Name - Nome único do pacote que identifica a aplicação.

Create Activity - O nome da classe que representa a tela inicial da aplicação.

Min SDK Version – Tipo de Emulador Android
Código – Aula07B
Em seguida vamos criar a tela principal. O arquivo main.xml, responsável pelo layout fica com o seguinte
conteúdo.
Página 4 de 16
PDM - Aula07- Ver 01 - 30/05/2017 03:46
Listagem 1. main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />
<Button
android:id="@+id/button5"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Auto Complete TextView" />
<Button
android:id="@+id/button1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Imagem e ImageButton" />
<Button
android:id="@+id/button6"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Spinner (ComboBox)" />
<Button
android:id="@+id/button2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="AlertDialog" />
<Button
android:id="@+id/button3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Toast" />
<Button
android:id="@+id/button4"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="ListView" />
<Button
android:id="@+id/button7"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="ProgressDialog" />
Página 5 de 16
PDM - Aula07- Ver 01 - 30/05/2017 03:46
</LinearLayout>
Listagem 2. Aula07BActivity.java
package com.pdm.aula07bex1;
import com.pdm.aula07bex1.R;
import
import
import
import
import
import
android.app.Activity;
android.content.Intent;
android.os.Bundle;
android.view.View;
android.view.View.OnClickListener;
android.widget.Button;
public class Aula7BActivity extends Activity implements OnClickListener{
/** Called when the activity is first created. */
Button b1,b2,b3,b4,b5,b6,b7;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
b1 = (Button) this.findViewById(R.id.button1);
b1.setOnClickListener(this);
b2 = (Button) this.findViewById(R.id.button2);
b2.setOnClickListener(this);
b3 = (Button) this.findViewById(R.id.button3);
b3.setOnClickListener(this);
b4 = (Button) this.findViewById(R.id.button4);
b4.setOnClickListener(this);
b5 = (Button) this.findViewById(R.id.button5);
b5.setOnClickListener(this);
b6 = (Button) this.findViewById(R.id.button6);
b6.setOnClickListener(this);
b7 = (Button) this.findViewById(R.id.button7);
b7.setOnClickListener(this);
}
public void onClick(View v){
if (v.getId() == b1.getId()){
startActivity(new Intent(this,
}
if (v.getId() == b2.getId()){
startActivity(new Intent(this,
}
if (v.getId() == b3.getId()){
startActivity(new Intent(this,
}
if (v.getId() == b4.getId()){
startActivity(new Intent(this,
}
if (v.getId() == b5.getId()){
startActivity(new Intent(this,
}
if (v.getId() == b6.getId()){
startActivity(new Intent(this,
}
if (v.getId() == b7.getId()){
startActivity(new Intent(this,
}
ExemploImageImageButton.class));
ExemploAlertDialog.class));
ExemploToast.class));
ExemploListView.class));
ExemploAutoCompleteTextView.class));
ExemploSpinner.class));
ExemploProgressDialog.class));
}
}
Listagem 3. strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
Página 6 de 16
PDM - Aula07- Ver 01 - 30/05/2017 03:46
<string name="hello">Aula7BActivity!</string>
<string name="app_name">Aula7B</string>
<string name="texto_combo">Isto é um Combo</string>
</resources>
Listagem 4. AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.pdm.veiculo"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".Aula7BActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".ExemploAutoCompleteTextView"></activity>
<activity android:name=".ExemploImageImageButton"></activity>
<activity android:name=".ExemploAlertDialog"></activity>
<activity android:name=".ExemploToast"></activity>
<activity android:name=".ExemploListView"></activity>
<activity android:name=".ExemploSpinner"></activity>
<activity android:name=".ExemploProgressDialog"></activity>
</application>
</manifest>
Listagem 5. exemplo_autocomplete_textview.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="Estados" />
<AutoCompleteTextView android:id="@+id/estados"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:completionThreshold="1"
android:completionHint="Digite o nome de um estado"
/>
<Button android:id="@+id/buttonSair"
android:layout_width="wrap_content" android:layout_height="wrap_content"
Página 7 de 16
PDM - Aula07- Ver 01 - 30/05/2017 03:46
android:layout_gravity="center" android:text="Sair" />
</LinearLayout>
Listagem 6. ExemploAutoCompleteTextView.java
package com.pdm.aula07bex1;
import
import
import
import
import
import
import
android.app.Activity;
android.os.Bundle;
android.view.View;
android.view.View.OnClickListener;
android.widget.ArrayAdapter;
android.widget.AutoCompleteTextView;
android.widget.Button;
public class ExemploAutoCompleteTextView extends Activity implements OnClickListener{
private static final String[] ESTADOS = new String[] { "Acre", "Alagoas", "Amapá","Amazonas",
"Bahia",
"Ceará", "Distrito Federal", "Goiás","Espírito Santo", "Maranhão", "Mato Grosso", "Mato
Grosso do Sul",
"Minas Gerais", "Pará", "Paraíba", "Paraná", "Pernambuco", "Piauí",
"Rio de Janeiro",
"Rio Grandedo Norte",
"Rio Grande do Sul","Rondônia", "Roraima", "São Paulo", "Santa Catarina",
"Sergipe","Tocantins"
};
Button bSair;
//@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.exemplo_autocomplete_textview);
initEstados();
bSair = (Button) this.findViewById(R.id.buttonSair);
bSair.setOnClickListener(this);
}
private void initEstados() {
//Cria um ArrayAdapter para exibir os estados
ArrayAdapter<String> adaptador = new
ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line, ESTADOS);
//estados
AutoCompleteTextView estatos = (AutoCompleteTextView) findViewById(R.id.estados);
estatos.setAdapter(adaptador);
}
public void onClick(View v){
if (v.getId() == bSair.getId()){
finish();
}
}
}
Listagem 7. exemplo_image_imagebutton.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView android:id="@+id/imgid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
<ImageView android:id="@+id/imgid2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
<ImageButton android:id="@+id/imageButton1"
Página 8 de 16
PDM - Aula07- Ver 01 - 30/05/2017 03:46
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:src="@drawable/smile1" />
<ImageButton android:id="@+id/imageButton2"
android:layout_width="wrap_content" android:layout_height="wrap_content" />
<Button android:id="@+id/buttonSair"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:text="Sair" />
</LinearLayout>
Listagem 8. ExemploImageImageButton.java
package com.pdm.aula07bex1;
import
import
import
import
import
import
import
import
android.app.Activity;
android.os.Bundle;
android.view.View;
android.view.View.OnClickListener;
android.widget.Button;
android.widget.ImageButton;
android.widget.ImageView;
android.widget.Toast;
public class ExemploImageImageButton extends Activity implements OnClickListener
Button bSair;
ImageButton bImagem1,bImagem2;
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.exemplo_imagem_imagebutton);
ImageView imgView = (ImageView)findViewById(R.id.imgid);
imgView.setImageResource(R.drawable.balloons);
imgView = (ImageView)findViewById(R.id.imgid2);
imgView.setImageResource(R.drawable.icon);
bImagem1 = (ImageButton) findViewById(R.id.imageButton1);
bImagem1.setOnClickListener(this);
bImagem2 = (ImageButton) findViewById(R.id.imageButton2);
bImagem2.setImageResource(R.drawable.smile2);
bImagem2.setOnClickListener(this);
bSair = (Button) this.findViewById(R.id.buttonSair);
bSair.setOnClickListener(this);
}
public void onClick(View v){
if (v.getId() == bSair.getId()){
finish();
}
if (v.getId() == bImagem1.getId()){
Toast.makeText(ExemploImageImageButton.this, "Imagem 1 OK",
Toast.LENGTH_SHORT).show();
}
if (v.getId() == bImagem2.getId()){
Toast.makeText(ExemploImageImageButton.this, "Imagem 2 OK",
Toast.LENGTH_SHORT).show();
}
}
}
Listagem 9. exemplo_spinner.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
Página 9 de 16
{
PDM - Aula07- Ver 01 - 30/05/2017 03:46
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:text="Selecione uma opção" />
<Spinner android:id="@+id/spinnerPlanetas"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:drawSelectorOnTop="true"
android:prompt="@string/texto_combo" />
<ImageView android:id="@+id/img"
android:layout_width="fill_parent" android:layout_height="fill_parent" />
<Button android:id="@+id/buttonExibir"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:text="Exibir Valor" />
</LinearLayout>
Listagem 10. ExemploSpinner.java
package com.pdm.aula07bex1;
import
import
import
import
import
import
import
import
import
import
import
import
android.app.Activity;
android.content.Intent;
android.os.Bundle;
android.view.View;
android.view.View.OnClickListener;
android.widget.AdapterView;
android.widget.AdapterView.OnItemSelectedListener;
android.widget.ArrayAdapter;
android.widget.Button;
android.widget.ImageView;
android.widget.Spinner;
android.widget.Toast;
public class ExemploSpinner extends Activity implements OnClickListener{
Button bExibir;
Spinner sPlaneta=null;
private String[] planetas = new String[] { "Mercúrio", "Venus", "Terra", "Marte", "Júptier",
"Saturno", "Urano",
"Netuno", "Plutão" };
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.exemplo_spinner);
sPlaneta = (Spinner) findViewById(R.id.spinnerPlanetas);
ArrayAdapter adaptador = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, planetas);
adaptador.setDropDownViewResource(android.R.layout.simple_spinner_item);
sPlaneta.setAdapter(adaptador);
bExibir = (Button) this.findViewById(R.id.buttonExibir);
bExibir.setOnClickListener(this);
}
public void onClick(View v){
if (v.getId() == bExibir.getId()){
String item = (String) sPlaneta.getSelectedItem();
Toast.makeText(this, "Valor do Item: " + item, Toast.LENGTH_SHORT).show();
}
}
}
Listagem 11. exemplo_alertdialog.xml
Página 10 de 16
PDM - Aula07- Ver 01 - 30/05/2017 03:46
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button android:id="@+id/b"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:text="Teste Alerta" />
</LinearLayout>
Listagem 12. ExemploAlertDialog.java
package com.pdm.aula07bex1;
import
import
import
import
import
import
import
import
android.app.Activity;
android.app.AlertDialog;
android.content.DialogInterface;
android.os.Bundle;
android.view.View;
android.widget.Button;
android.widget.Toast;
android.view.View.OnClickListener;
public class ExemploAlertDialog extends Activity{
Button b;
String msg;
//@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.exemplo_alertdialog);
// Exibe o alerta de confirmação ao clicar no botão
b = (Button) findViewById(R.id.b);
b.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
AlertDialog diaBox = criarDialogBox();
diaBox.show();
// WARNING: (in general...)
// after showing a dialog you should have NO more code. Let the buttons of
//
//
//
//
//
the dialog box handle the rest of the logic. For instance, in this
example a modal dialog box is displayed (once shown you can not do
anything to the parent until the child is closed) however the code in
the parent continues to execute after the show() method is
called.
//txtMsg.setText("I am here!");
}
});
}// fim do onCreate
private AlertDialog criarDialogBox(){
AlertDialog meuDialogo = new AlertDialog.Builder(this)
//configura messagem, título, e imagem
.setTitle("Finalização")
.setMessage("Tem certeza que deseja sair?")
.setIcon(R.drawable.smile1)
//configura os três botões de opção
.setPositiveButton("Sim", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
//o que deve ser feito quando a resposta for SIM
msg = "SIM "+ Integer.toString(whichButton);
//txtMsg.setText(msg);
Página 11 de 16
PDM - Aula07- Ver 01 - 30/05/2017 03:46
Toast.makeText(ExemploAlertDialog.this, "Sim! " + msg,
Toast.LENGTH_SHORT).show();
finish();
}
})//setPositiveButton
.setNeutralButton("Cancela",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
//o que deve ser feito quando a resposta for CANCELA
msg = "CANCELA " + Integer.toString(whichButton);
//txtMsg.setText(msg);
Toast.makeText(ExemploAlertDialog.this, "Cancela! " + msg,
Toast.LENGTH_SHORT).show();
}//OnClick
})//setNeutralButton
.setNegativeButton("Não", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
//o que deve ser feito quando a resposta for NÃO
msg = "NÃO " + Integer.toString(whichButton);
//txtMsg.setText(msg);
Toast.makeText(ExemploAlertDialog.this, "Não! " + msg,
Toast.LENGTH_SHORT).show();
}
})//setNegativeButton
.create();
return meuDialogo;
}
}
Listagem 13. exemplo_toast.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:text="O Toast abriu com uma View em XML.
\nClick no botão Repetir para ver Views no Toast também, não somente textos"
/>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center">
<Button android:id="@+id/buttonRepetir"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:text="Repetir" />
<Button android:id="@+id/buttonSair"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:text="Sair" />
</LinearLayout>
</LinearLayout>
Listagem 14. exemplo_toast_view_inflate.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
Página 12 de 16
PDM - Aula07- Ver 01 - 30/05/2017 03:46
<View
android:layout_height="2dip" android:layout_width="fill_parent"
android:background="#FF909090" />
<TextView
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:text="Exemplo para o LayoutInflater" />
<TextView
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:text="O Android permite abrir View dentro de Mensagem!" />
<ImageView
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:src="@drawable/smile1" />
<View
android:layout_height="2dip" android:layout_width="fill_parent"
android:background="#FF909090" />
</LinearLayout>
Listagem 15. ExemploToast.java
package com.pdm.aula07bex1;
import
import
import
import
import
import
import
import
android.app.Activity;
android.content.Context;
android.os.Bundle;
android.view.LayoutInflater;
android.view.View;
android.view.View.OnClickListener;
android.widget.Button;
android.widget.Toast;
public class ExemploToast extends Activity
implements OnClickListener{
Button bSair,bRepetir;
Toast toast;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.exemplo_toast);
bSair = (Button) this.findViewById(R.id.buttonSair);
bSair.setOnClickListener(this);
bRepetir = (Button) this.findViewById(R.id.buttonRepetir);
bRepetir.setOnClickListener(this);
//
//
Toast toast = Toast.makeText(this, "Teste de Mensagem", Toast.LENGTH_SHORT);
toast.show();
View tv = getView();
this.toast = new Toast(this);
this.toast.setView(tv);
this.toast.setDuration(Toast.LENGTH_LONG);
this.toast.show();
}
private View getView() {
//View view = new TextView(this);
//view.setText("Podemos mostrar qualquer coisa no Toast");
//Abrir uma View a partir de um xml
LayoutInflater inflate = (LayoutInflater)
getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflate.inflate(R.layout.exemplo_toast_view_inflate, null);
Página 13 de 16
PDM - Aula07- Ver 01 - 30/05/2017 03:46
//ImageView view = new ImageView(this);
//view.setImageResource(R.drawable.smile1);
return view;
}
public void onClick(View v){
if (v.getId() == bSair.getId()){
finish();
}
if (v.getId() == bRepetir.getId()){
this.toast.show();
}
}
}
Listagem 16. exemplo_listview.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/android" />
<View
android:layout_height="2dip"
android:layout_width="wrap_content"
android:background="#cccccc" />
<ListView android:id="@+id/listview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#000000" />
</LinearLayout>
Listagem 17. ExemploListView.java
package com.pdm.aula07bex1;
import java.util.ArrayList;
import com.pdm.aula07bex1.adapter.Smile;
import com.pdm.aula07bex1.adapter.SmileAdapter;
import
import
import
import
import
import
import
import
android.app.Activity;
android.os.Bundle;
android.util.Log;
android.view.View;
android.widget.AdapterView;
android.widget.AdapterView.OnItemClickListener;
android.widget.ListView;
android.widget.Toast;
public class ExemploListView extends Activity implements OnItemClickListener {
protected static final String CATEGORIA = "livro";
private ListView listView;
//@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.exemplo_listview);
ArrayList<Smile> lista = new ArrayList<Smile>();
Página 14 de 16
PDM - Aula07- Ver 01 - 30/05/2017 03:46
lista.add(new Smile("Feliz", Smile.FELIZ));
lista.add(new Smile("Triste", Smile.TRISTE));
lista.add(new Smile("Louco", Smile.LOUCO));
// Adaptador customizado
SmileAdapter adapter = new SmileAdapter(this, lista);
// ListView
listView = (ListView) findViewById(R.id.listview);
listView.setAdapter(adapter);
listView.setOnItemClickListener(this);
}
public void onItemClick(AdapterView<?> parent, View view, int posicao, long id) {
Log.i(CATEGORIA, "ExemploListView.onItemClick posicao: " + posicao + ", id: " + id);
// Recupera o Smile naquela posição
Smile smile = (Smile) listView.getAdapter().getItem(posicao);
// Exibe um alerta
Toast.makeText(this, "Smile selecionado: " + smile.nome, Toast.LENGTH_SHORT).show();
}
}
Listagem 16. exemplo_progressdialog.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent" >
<ImageView android:id="@+id/img"
android:layout_width="fill_parent" android:layout_height="fill_parent"
/>
</LinearLayout>
Listagem 17. ExemploProgressDialog.java
package com.pdm.aula07bex1;
import
import
import
import
java.io.IOException;
java.io.InputStream;
java.net.MalformedURLException;
java.net.URL;
import
import
import
import
import
import
import
import
android.app.Activity;
android.app.ProgressDialog;
android.graphics.Bitmap;
android.graphics.BitmapFactory;
android.os.Bundle;
android.os.Handler;
android.util.Log;
android.widget.ImageView;
public class ExemploProgressDialog extends Activity {
private static final String URL =
"http://chart.apis.google.com/chart?chs=150x150&cht=qr&chl=www.livroandroid.com.br&choe=UTF-8";
private ProgressDialog dialog;
private Handler handler = new Handler();
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.exemplo_progressdialog);
//Abre a janela com a barra de progresso
dialog = ProgressDialog.show(this,"Exemplo", "Buscando imagem, por aguarde...",
false,true);
Página 15 de 16
PDM - Aula07- Ver 01 - 30/05/2017 03:46
//
//
//
//
//
//
//
ProgressDialog dialog = new ProgressDialog(this);
dialog.setTitle("Exemplo");
dialog.setMessage("Buscando imagem, por aguarde...");
dialog.setIndeterminate(true);
dialog.setProgress(int v); // se indeterminate = true - v entre 0 e 10000
dialog.setCancelable(true);
dialog.show();
downloadImagem(URL);
}
//Faz o download da imagem em uma nova Thread
private void downloadImagem(final String urlImg) {
new Thread() {
@Override
public void run() {
try {
//Faz o download da imagem
URL url = new URL(urlImg);
InputStream is = url.openStream();
final Bitmap imagem = BitmapFactory.decodeStream(is);
is.close();
//Atualiza a tela
atualizaTela(imagem);
} catch (MalformedURLException e) {
return;
} catch (IOException e) {
//Uma aplicação real deveria tratar este erro
Log.e("Erro ao fazer o download", e.getMessage(),e);
}
}
}.start();
}
//Utiliza um Handler para atualizar a tela
private void atualizaTela(final Bitmap imagem) {
handler.post(new Runnable(){
public void run() {
//Fecha a janela de progresso
dialog.dismiss();
ImageView imgView = (ImageView) findViewById(R.id.img);
imgView.setImageBitmap(imagem);
}});
}
}
Página 16 de 16
Download