+
Treinamento em Android
+5. Criando aplicações Android
+Aplicação que soma números
Project Name: SomaNumeros
Package Name: br.org.citi.appsoma
Create Activity: SomaActivity
Application Name: Soma Números
Build SDK: 16
+Aplicação que soma números
+Aplicação que soma números
res/values/strings.xml
<?xml version="1.0" encoding="utf-8"?><resources>
<string name="hello">Digite o primeiro número:</string> <string name="app_name">Soma Números</string> <string name="text2">Digite o segundo número:</string><string name="labelSomar">Somar</string> </resources>
+Aplicação que soma números
AppSomaNumeros.java
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);
ednumero1 = (EditText) findViewById(R.id.numero1);ednumero2 = (EditText) findViewById(R.id.numero2);
Button btsomar = (Button) findViewById(R.id.btsomar);
+Aplicação que soma números
btsomar.setOnClickListener(new View.OnClickListener(){
public void onClick(View arg0) { double num1 = Double.parseDouble(
ednumero1.getText().toString()); double num2 = Double.parseDouble(
ednumero2.getText().toString()); double res = num1 + num2;
}});
+Aplicação que soma números
AlertDialog.Builder dialogo = new AlertDialog.Builder(AppSomaNumeros.this);
dialogo.setTitle("Aviso"); dialogo.setMessage("Soma:" + res); dialogo.setNeutralButton("OK", null); dialogo.show();
} });}
+Melhorando!
Transforme essa aplicação em uma calculadora de dois números. 4 operações; Crie um método para cada operação; Informe a operação que foi realizada no título do Alert que vai ser
exibido.
+Aplicação de compras
Project Name: AppCompras
Package Name: br.org.citi.appcompras
Create Activity: ComprasActivity
Application Name: Compras
Build SDK: 16
+Aplicação de compras
Dicas e Lembretes: As labels que acompanham os widgets devem ser declaradas no
arquivo res/values/strings.xml; A propriedade chave para esse aplicação é a “isChecked()”;
+Aplicação de compras
No arquivo activity_main.xml, adicionaremos os seguintes elementos, em ordem:
CheckBoxText: Arroz (R$ 2,69)Id: @+id/chkArroz
CheckBoxText: Leite (R$ 5,00)Id: @+id/chkLeite
CheckBoxText: Carne (R$ 9,70)Id: @+id/chkCarne
CheckBoxText: Feijão (R$ 2,30)Id: @+id/chkFeijao
ButtonText: Total das comprasId: @+id/bTotalLayout width: fill_parent
+Aplicação de compras
AppSistemaCompras.java
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);setContentView(R.layout.main);chkarroz = (CheckBox)
findViewById(R.id.chkArroz);chkleite = (CheckBox)
findViewById(R.id.chkLeite);chkcarne = (CheckBox)
findViewById(R.id.chkCarne);chkfeijao = (CheckBox)
findViewById(R.id.chkFeijao);Button bttotal = (Button)
findViewById(R.id.bTotal);
+Aplicação de compras
bttotal.setOnClickListener(newView.OnClickListener(){
public void onClick(View arg0) {double total =0;if(chkarroz.isChecked())
total += 2.69;if(chkleite.isChecked())
total += 5.00;if(chkcarne.isChecked())
total += 9.7;if(chkfeijao.isChecked())
total += 2.30;}//Código que exibe o alerta
+Melhorando!
Implemente uma função de carrinho de compras: À medida que o botão for clicado, a aplicação deve somar os
valores e exibir em um texto;
+Aplicação de cálculo de salário v1.0
Project Name: AppSalario
Package Name: br.org.citi.appsalario
Create Activity: SalarioActivity
Application Name: Cálculo de Salário
Build SDK: 16
+Aplicação de cálculo de salário v.1.0
+Aplicação de cálculo de salário v1.0
Para essa primeira versão, usaremos RadioGroup e RadioButton;
res/layout/main.xml:
EditTextid: “@+id/edsalario”;layout_width: “fill_parent”.
TextViewtext: “Qual é o seu
percentual ?”RadioGroup
layout_width:”fill_parent”;id: “@+id/rgopcoes”.
+Aplicação de cálculo de salário v1.0
Dentro da tag RadioGroup, insira os elementos abaixo, do tipo RadioButton:
RadioButtontext: “40%”id “@+id/rb40”RadioButtontext: “45%”id: “@+id/rb45”RadioButtontext: “50%”id: “@+id/rb50”
Buttontext: “Calcular novo salário”id: “@+id/btcalcular”layout_width: “fill_parent”
Insira também o botão:
+Aplicação de cálculo de salário v1.0
AppCalculaSalario.javapublic void onCreate(Bundle savedInstanceState)
{super.onCreate(savedInstanceState);setContentView(R.layout.main);
Button btcalcular = (Button)findViewById(R.id.btcalcular);
btcalcular.setOnClickListener(newView.OnClickListener(){
public void onClick(View arg0) {double salario, novo_sal;EditText edsalario = (EditText)
findViewById(R.id.edsalario);
+Aplicação de cálculo de salário v1.0
salario = Double.parseDouble(edsalario.getText().toString());
RadioGroup rg = (RadioGroup)
findViewById(R.id.rgopcoes);int op = rg.getCheckedRadioButtonId();if(op==R.id.rb40)
novo_sal = salario + (salario * 0.4);else
if(op==R.id.rb45)novo_sal = salario +
(salario * 0.45);else
novo_sal = salario + (salario * 0.5);
//Código que exibe o alerta
+Melhorando!
Nem todas as pessoas podem saber o valor do salário! Adicione um campo para o usuário informar uma senha para
acesso; Se a senha estiver incorreta ou o campo estiver vazio, exiba um
alerta informando o mesmo ao usuário; Ao exibir o resultado, limpe os campos de texto e selecione o
primeiro RadioButton.
+Aplicação de cálculo de salário v1.1
Project Name: AppSalarioSpinner
Package Name: br.org.citi.appsalariospinner
Create Activity: SalarioSpinnerActivity
Application Name: Cálculo Salário v2
Build SDK: 16
+Aplicação de cálculo de salário v1.1
+Aplicação de cálculo de salário v1.1
res/layout/main.xml Semelhante ao anterior, apenas trocando o RadioGroup pelo
Spinner:
Spinner:ld: “@+id/spnopcoes”layout_width: “fill_parent”
+Aplicação de cálculo de salário v1.1
AppCalculaSalario.java
private static final String[] percentual ={"De 40%","De 45%","De 50%"};
ArrayAdapter<String> aPercentual;Spinner spnsal;public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);setContentView(R.layout.main);Button btmostrar = (Button)
findViewById(R.id.btcalcular);aPercentual = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item,percentual);spnsal = (Spinner) findViewById(R.id.spnopcoes);spnsal.setAdapter(aPercentual);
+Aplicação de cálculo de salário v1.1
btmostrar.setOnClickListener(new View.OnClickListener(){public void onClick(View arg0) {
double salario=0, novo_sal = 0;EditText edsalario = (EditText)
findViewById(R.id.edsalario);salario =
Double.parseDouble(edsalario.getText().toString());switch(spnsal.getSelectedItemPosition())
{case 0: novo_sal = salario + (salario *
0.4); break;case 1: novo_sal = salario + (salario *
0.45); break;case 2: novo_sal = salario + (salario *
0.5); break; }//Código para exibir o alerta
+Melhorando!
Adicione o controle de bonificações de acordo com os cargos listados abaixo: Funcionário: 10%, 15%, 20%; Gerente: 20%, 25%, 30%; Diretor: 30%, 35% 40%;
Utiliza DOIS Spinners, onde o segundo só apareça depois que um elemento do primeiro for selecionado!
Verificar se o cargo está escolhido ao clicar no botão!
+Aplicação de lista telefônica
Project Name: AppLista
Package Name: br.org.citi.applista
Create Activity: MainActivity
Application Name: Lista Telefônica
Build SDK: 16
+Aplicação de lista telefônica
+Aplicação de lista telefônica
No arquivo main.xml, adicionaremos o elemento:
ListViewid: “@+id/lstcontatos”layout_width: “fill_parent”
+Aplicação de lista telefônica
AppLista.java
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);setContentView(R.layout.main);ArrayAdapter<String> adapter = new
ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, contatos);
lista = (ListView)findViewById(R.id.lstcontatos);
lista.setAdapter(adapter);
+Aplicação de lista telefônica
lista.setOnItemClickListener(newOnItemClickListener(){
public void onItemClick(AdapterView parent, View view, int position, long id) {
AlertDialog.Builder dialogo = new
AlertDialog.Builder(AppLista.this);dialogo.setTitle("Contato
selecionado");dialogo.setMessage(((TextView)
view).getText().toString());dialogo.setNeutralButton("OK",
null);dialogo.show();
}});
+Desafio!
Altere a aplicação para suportar as seguintes funções: Inserir um contato, exibindo um alerta confirmando a
operação; Remover um contato ao clicar no mesmo, exibindo
ainda um alerta confirmando a operação;
+Aplicação que visualiza imagens v1.0
Project Name: AppImagem
Package Name: br.org.citi.appimagem
Create Activity: MainActivity
Application Name: Visualizador de Imagens
Build SDK: 16
+Aplicação que visualiza imagens
+Aplicação que visualiza imagens v1.0
Dentro de res/drawable-mdpi: coala.jpg; farol.jpg;
Adicionaremos também um LinearLayout do tipo Horizontal DENTRO do Layout padrão, que contém um objeto ImageView.
+Aplicação que visualiza imagens v1.0
Ao adicionar os elementos pelo Graphical Layout, altere as propriedades para ficarem como estão abaixo:
<LinearLayout android:id="@+id/linearLayout1" android:layout_width="match_parent" android:layout_height="wrap_content" >
<ImageView android:id="@+id/imagem" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/coala" />
</LinearLayout>
+Aplicação que visualiza imagens v1.0
No arquivo main.xml, adicionaremos os elementos em ordem:
TextViewid: “@+id/txtinfo”
text: “Foto 1” Button1id: “@+id/btimagem1”text: “Exibir foto 1”layout_width: “fill_parent”Button2id: “@+id/btimagem2”text: “Exibir foto 2”layout_width: “fill_parent”
+Aplicação que visualiza imagens v1.0
AppImage.javapublic void onCreate(Bundle savedInstanceState)
{super.onCreate(savedInstanceState);setContentView(R.layout.main);//Pega as referências de todos os componentes da
telaButton btfoto1 = (Button)
findViewById(R.id.btimagem1);Button btfoto2 = (Button)
findViewById(R.id.btimagem2);imagem = (ImageView)
findViewById(R.id.imagem);txt = (TextView)
findViewById(R.id.txtinfo);
+Aplicação que visualiza imagens v1.0
btfoto1.setOnClickListener(newView.OnClickListener(){
public void onClick(View arg0) {
imagem.setImageResource(R.drawable.coala);txt.setText("Foto 1");
}});btfoto2.setOnClickListener(new
View.OnClickListener(){public void onClick(View arg0) {
imagem.setImageResource(R.drawable.farol);txt.setText("Foto 2");
}});
}
+Melhorando!
Coloque mais 3 imagens na pasta res/drawable-mdpi;
Faça a seleção das mesmas através de um Spinner;
Dê a possibilidade do usuário editar o nome dessa imagem, que possui um valor default; Imagem 1, Imagem 2,...
+Aplicação que visualiza imagens v1.1
Project Name: AppGaleria
Package Name: br.org.citi.appgaleria
Create Activity: MainActivity
Application Name: Galeria de Imagens
Build SDK: 16
+Aplicação que visualiza imagens v1.1
+Aplicação que visualiza imagens v1.1
No arquivo main.xml, adicionaremos o elemento:
Para essa aplicação, criaremos uma classe auxiliar: ImageAdapter.
Galleryid: “@+id/gallery”layout_width: “fill_parent”
+Aplicação que visualiza imagens v1.1
ImageAdapter.javapackage br.ufpe.cin.android.appgallery; import android.content.Context;import android.view.*;import android.widget.*;public class ImageAdapter extends BaseAdapter {
private Context myContext;private int[] myImageIds = {
R.drawable.coala,R.drawable.farol,R.drawable.pinguins,
};public ImageAdapter(Context c) { this.myContext = c; }
+Aplicação que visualiza imagens v1.1
public int getCount() { return this.myImageIds.length; }public Object getItem(int position) { return position; }public long getItemId(int position) { return position; }
public View getView(int position, ViewconvertView, ViewGroup parent) {
ImageView i = new ImageView(this.myContext);i.setImageResource(this.myImageIds[position]);i.setScaleType(ImageView.ScaleType.FIT_XY);i.setLayoutParams(new Gallery.LayoutParams(150,
150));return i;
}
public float getScale(boolean focused, int offset) {return Math.max(0, 1.0f /
(float)Math.pow(2, Math.abs(offset)));
}}
+Aplicação que visualiza imagens v1.0
AppGallery.javapublic void onCreate(Bundle
savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);((Gallery)
findViewById(R.id.gallery)).setAdapter(new
ImageAdapter(this));}
+Melhorando!
Coloque, na aplicação, outra galeria, e implemente dois botões que trocam as imagens de galeria
+Mudança de Layout
Project Name: AppLayouts
Package Name: br.org.citi.applayouts
Create Activity: MainActivity
Application Name: Visualizador de Imagens
Build SDK: 16
+Mudança de Layout
+Mudança de Layout
No arquivo main.xml, adicionaremos o elemento:
Button:id: “@+id/bttela2”layout_width: “fill_parent”text: “Ir pata tela 2”
Crie um arquivo “tela2.xml” na pasta res/layout e adicione os seguintes elementos:TextView
text: “Você está na tela 2”Buttonid: “@+id/bttelaprincipal”layout_width: “fill_parent”text: “Ir pata tela principal”
+Mudança de Layout
AppLayout.java
public void CarregaTelaPrincipal() {setContentView(R.layout.main);Button bttela2 = (Button)
findViewById(R.id.bttela2);bttela2.setOnClickListener(new
View.OnClickListener(){public void onClick(View arg0) {
CarregaTela2();}
});}
+Mudança de Layout
public void CarregaTela2() {setContentView(R.layout.tela2);Button bttelaprincipal = (Button)
findViewById(R.id.bttelaprincipal);bttelaprincipal.setOnClickListener(new
View.OnClickListener(){public void onClick(View arg0) {
CarregaTelaPrincipal();}
});}
+Mudança de Layout
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);CarregaTelaPrincipal();
}
+Aplicação de cadastro
Project Name: AppCadastro
Package Name: br.org.citi.appcadastro
Create Activity: MainActivity
Application Name: Cadastro
Build SDK: 16
+Aplicação de cadastro
+Aplicação de cadastro
main.xml
ButtonId: “@+principal/btcadastrarpessoas”layout_width: “fill_parent”text: “Cadastrar pessoa”ButtonId: “@+principal/btlistrarpessoas”layout_width: “fill_parent”text: “Listar pessoas cadastradas”
+Aplicação de cadastro
cadastro.xml
TextViewtext: “Módulo de cadastro. Digite seus dados abaixo:”TextViewtext: “Nome:”EditTextid: “@+cadastro/ednome”layout_width: “fill_parent”TextView
text: “Profissão:”
EditTextid: “@+cadastro/edprofissao”layout_width: “fill_parent”TextViewtext: “Idade:”EditTextid: “@+cadastro/edidade”layout_width: “fill_parent”
+Aplicação de cadastro
cadastro.xml
LinearLayoutorientation: horizontal
layout_widith: fill_parentgravity: center
Buttonid: “@+cadastro/btcadastrar”text: “Cadastrar pessoa”Buttonid: “@+cadastro/btcancelar”text: “Cancelar”
+Aplicação de cadastro
listacadastrados.xmlTextView
text: “Lista de pessoas cadastradas.”textColor: “#ffffff”textSize: “20sp”
LinearLayoutorientation: horizontal
layout_widith: fill_parentid: “@+id/layoutNome”
TextViewtext: “Nome:”textColor: “#ffff00”textSize: “20sp”TextViewtext: “”TextColor “#ffffff”textSize “20sp”id: “@+lista/txtnome”
+Aplicação de cadastro
listacadastrados.xml
LinearLayoutorientation: horizontal
layout_widith: fill_parentid: “@+id/layoutProfissao”
TextViewtext: “Profissao:”textColor: “#ffff00”textSize: “20sp”TextViewtext: “”TextColor “#ffffff”textSize “20sp”id: “@+lista/txtprofissao”
+Aplicação de cadastro
listacadastrados.xml
LinearLayoutorientation: horizontal
layout_widith: fill_parentid: “@+id/layoutIdade”
TextViewtext: “Idade:”textColor: “#ffff00”textSize: “20sp”TextViewtext: “”TextColor “#ffffff”textSize “20sp”id: “@+lista/txtidade”
+Aplicação de cadastro
listacadastrados.xml
LinearLayoutorientation: horizontal
layout_widith: fill_parentgravity: centerid: “@+id/layoutBotoes”
Buttonid: “@+lista/btvoltar”text: “Voltar”Buttonid: “@+lista/btavancar”text: “Avançar”
Buttonid: “@+lista/btmenu”layout_width: “fill_parent”text: “Menu Princiapal”
+Aplicação de cadastro
Registro.javapublic class Registro {String nome;String profissao;String idade;Registro Prox;Registro Ant;
}
+Aplicação de cadastro
AppLayout.javavoid CarregaTelaPrincipal () {
setContentView(R.layout.main);Button btcadpess = (Button)
findViewById(R.principal.btcadastrarpessoas);Button btlistapess = (Button)
findViewById(R.principal.btlistarpessoas);btcadpess.setOnClickListener(new View.OnClickListener(){
public void onClick(View arg0){CarregaTelaCadastro();
}});btlistapess.setOnClickListener(new View.OnClickListener(){
public void onClick(View arg0){CarregaListaPessoas();
}});}
+Aplicação de cadastro
void CarregaTelaCadastro() {setContentView(R.layout.cadastro);Button btcadastrar = (Button)
findViewById(R.cadastro.btcadastrar);Button btcancelar = (Button)
findViewById(R.cadastro.btcancelar);btcadastrar.setOnClickListener(new View.OnClickListener(){
public void onClick(View arg0){try {
reg = new Registro();ednome =
(EditText)findViewById(R.cadastro.ednome);edprof =
(EditText)findViewById(R.cadastro.edprofissao);edidade =
(EditText)findViewById(R.cadastro.edidade);
+Aplicação de cadastro
reg.nome = ednome.getText().toString();
reg.profissao = edprof.getText().toString();
reg.idade = edidade.getText().toString();
if(pri==null)pri=reg;reg.Ant = ult;
if(ult==null) ult=reg;else {
ult.Ant = reg;ult=reg;
}numreg++;
showMessage("Cadastro efetuado comsucesso", "Aviso");
CarregaTelaPrincipal();}catch(Exception e) {
showMessage("Erro ao cadastrar", "Erro");
}}});
+Aplicação de cadastro
btcancelar.setOnClickListener(newView.OnClickListener(){
public void onClick(View arg0){CarregaTelaPrincipal();
}});
}
void CarregaListaPessoas() {if(numreg==0) {
showMessage("Nenhum registro cadastrado", "Aviso");
CarregaTelaPrincipal();return;
}setContentView(R.layout.listacadastrados);pos=1;aux=pri;
+Aplicação de cadastro
TextView txtnome = (TextView) findViewById(R.lista.txtnome);
TextView txtidade = (TextView) findViewById(R.lista.txtidade);
TextView txtprofissao = (TextView) findViewById(R.lista.txtprofissao);
Button btmenu = (Button) findViewById(R.lista.btmenu);Button btavancar = (Button) findViewById(R.lista.btavancar);Button btvoltar = (Button) findViewById(R.lista.btvoltar);txtnome.setText(aux.nome);txtidade.setText(aux.idade);txtprofissao.setText(aux.profissao);btmenu.setOnClickListener(new View.OnClickListener(){
public void onClick(View arg0){CarregaTelaPrincipal();
}});
+Aplicação de cadastro
btvoltar.setOnClickListener(new View.OnClickListener(){public void onClick(View arg0){
if(pos==1) return;pos--;aux=aux.Ant;TextView txtnome = (TextView)
findViewById(R.lista.txtnome);TextView txtidade = (TextView)
findViewById(R.lista.txtidade);TextView txtprofissao = (TextView)
findViewById(R.lista.txtprofissao);txtnome.setText(aux.nome);txtidade.setText(aux.idade);txtprofissao.setText(aux.profissao);
}});
+Aplicação de cadastro
btavancar.setOnClickListener(new View.OnClickListener(){public void onClick(View arg0){
if(pos==numreg) return;pos++;aux=aux.Prox;TextView txtnome = (TextView)
findViewById(R.lista.txtnome);TextView txtidade = (TextView)
findViewById(R.lista.txtidade);TextView txtprofissao = (TextView)
findViewById(R.lista.txtprofissao);txtnome.setText(aux.nome);txtidade.setText(aux.idade);txtprofissao.setText(aux.profissao);
}});
}
+Aplicação de cadastro
Registro pri,reg,ult,aux;EditText ednome,edprof,edidade;int numreg,pos;public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);numreg=0;pri=null;ult=null;CarregaTelaPrincipal();
}public void showMessage(String Caption,String itle) {
AlertDialog.Builder dialogo = new AlertDialog.Builder(AppCadastro.this);
dialogo.setTitle(Title);dialogo.setMessage(Caption);dialogo.setNeutralButton("OK", null);dialogo.show();
}
+Melhorando!
Vamos adicionar uma imagem associada à pessoa cadastrada;
Essa imagem deve ser escolhida de uma galeria (obviamente, contendo mais de uma imagem);
Habilite a função de edição, onde todos os dados serão alterados; DICA: Use a mesma tela do cadastro!
Top Related