+ Treinamento em Android. + 5. Criando aplicaes Android.

  • Published on
    21-Apr-2015

  • View
    110

  • Download
    1

Transcript

  • Slide 1
  • + Treinamento em Android
  • Slide 2
  • + 5. Criando aplicaes Android
  • Slide 3
  • + Aplicao que soma nmeros Project Name: SomaNumeros Package Name: br.org.citi.appsoma Create Activity: SomaActivity Application Name: Soma Nmeros Build SDK: 16
  • Slide 4
  • + Aplicao que soma nmeros
  • Slide 5
  • + res/values/strings.xml Digite o primeiro nmero: Soma Nmeros Digite o segundo nmero: Somar
  • Slide 6
  • + Aplicao que soma nmeros 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);
  • Slide 7
  • + Aplicao que soma nmeros 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; } });
  • Slide 8
  • + Aplicao que soma nmeros AlertDialog.Builder dialogo = new AlertDialog.Builder(AppSomaNumeros.this); dialogo.setTitle("Aviso"); dialogo.setMessage("Soma:" + res); dialogo.setNeutralButton("OK", null); dialogo.show(); } }); }
  • Slide 9
  • + Melhorando! Transforme essa aplicao em uma calculadora de dois nmeros. 4 operaes; Crie um mtodo para cada operao; Informe a operao que foi realizada no ttulo do Alert que vai ser exibido.
  • Slide 10
  • + Aplicao de compras Project Name: AppCompras Package Name: br.org.citi.appcompras Create Activity: ComprasActivity Application Name: Compras Build SDK: 16
  • Slide 11
  • + Aplicao 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 aplicao a isChecked();
  • Slide 12
  • + Aplicao de compras No arquivo activity_main.xml, adicionaremos os seguintes elementos, em ordem: CheckBox Text: Arroz (R$ 2,69) Id: @+id/chkArroz CheckBox Text: Leite (R$ 5,00) Id: @+id/chkLeite CheckBox Text: Carne (R$ 9,70) Id: @+id/chkCarne CheckBox Text: Feijo (R$ 2,30) Id: @+id/chkFeijao Button Text: Total das compras Id: @+id/bTotal Layout width: fill_parent
  • Slide 13
  • + Aplicao 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);
  • Slide 14
  • + Aplicao de compras bttotal.setOnClickListener(new View.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; } //Cdigo que exibe o alerta
  • Slide 15
  • + Melhorando! Implemente uma funo de carrinho de compras: medida que o boto for clicado, a aplicao deve somar os valores e exibir em um texto;
  • Slide 16
  • + Aplicao de clculo de salrio v1.0 Project Name: AppSalario Package Name: br.org.citi.appsalario Create Activity: SalarioActivity Application Name: Clculo de Salrio Build SDK: 16
  • Slide 17
  • + Aplicao de clculo de salrio v.1.0
  • Slide 18
  • + Aplicao de clculo de salrio v1.0 Para essa primeira verso, usaremos RadioGroup e RadioButton; res/layout/main.xml: EditText id: @+id/edsalario; layout_width: fill_parent. TextView text: Qual o seu percentual ? RadioGroup layout_width:fill_parent; id: @+id/rgopcoes.
  • Slide 19
  • + Aplicao de clculo de salrio v1.0 Dentro da tag RadioGroup, insira os elementos abaixo, do tipo RadioButton: RadioButton text: 40% id @+id/rb40 RadioButton text: 45% id: @+id/rb45 RadioButton text: 50% id: @+id/rb50 Button text: Calcular novo salrio id: @+id/btcalcular layout_width: fill_parent Insira tambm o boto:
  • Slide 20
  • + Aplicao de clculo de salrio v1.0 AppCalculaSalario.java public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button btcalcular = (Button) findViewById(R.id.btcalcular); btcalcular.setOnClickListener(new View.OnClickListener(){ public void onClick(View arg0) { double salario, novo_sal; EditText edsalario = (EditText) findViewById(R.id.edsalario);
  • Slide 21
  • + Aplicao de clculo de salrio 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); //Cdigo que exibe o alerta
  • Slide 22
  • + Melhorando! Nem todas as pessoas podem saber o valor do salrio! Adicione um campo para o usurio informar uma senha para acesso; Se a senha estiver incorreta ou o campo estiver vazio, exiba um alerta informando o mesmo ao usurio; Ao exibir o resultado, limpe os campos de texto e selecione o primeiro RadioButton.
  • Slide 23
  • + Aplicao de clculo de salrio v1.1 Project Name: AppSalarioSpinner Package Name: br.org.citi.appsalariospinner Create Activity: SalarioSpinnerActivity Application Name: Clculo Salrio v2 Build SDK: 16
  • Slide 24
  • + Aplicao de clculo de salrio v1.1
  • Slide 25
  • + res/layout/main.xml Semelhante ao anterior, apenas trocando o RadioGroup pelo Spinner: Spinner: ld: @+id/spnopcoes layout_width: fill_parent
  • Slide 26
  • + Aplicao de clculo de salrio v1.1 AppCalculaSalario.java private static final String[] percentual = {"De 40%","De 45%","De 50%"}; ArrayAdapter 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 (this, android.R.layout.simple_spinner_item,percentual); spnsal = (Spinner) findViewById(R.id.spnopcoes); spnsal.setAdapter(aPercentual);
  • Slide 27
  • + Aplicao de clculo de salrio 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; } //Cdigo para exibir o alerta
  • Slide 28
  • + Melhorando! Adicione o controle de bonificaes de acordo com os cargos listados abaixo: Funcionrio: 10%, 15%, 20%; Gerente: 20%, 25%, 30%; Diretor: 30%, 35% 40%; Utiliza DOIS Spinners, onde o segundo s aparea depois que um elemento do primeiro for selecionado! Verificar se o cargo est escolhido ao clicar no boto!
  • Slide 29
  • + Aplicao de lista telefnica Project Name: AppLista Package Name: br.org.citi.applista Create Activity: MainActivity Application Name: Lista Telefnica Build SDK: 16
  • Slide 30
  • + Aplicao de lista telefnica
  • Slide 31
  • + No arquivo main.xml, adicionaremos o elemento: ListView id: @+id/lstcontatos layout_width: fill_parent
  • Slide 32
  • + Aplicao de lista telefnica AppLista.java public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ArrayAdapter adapter = new ArrayAdapter (this,android.R.layout.simple_list_item_1, contatos); lista = (ListView) findViewById(R.id.lstcontatos); lista.setAdapter(adapter);
  • Slide 33
  • + Aplicao de lista telefnica lista.setOnItemClickListener(new OnItemClickListener(){ 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(); } });
  • Slide 34
  • + Desafio! Altere a aplicao para suportar as seguintes funes: Inserir um contato, exibindo um alerta confirmando a operao; Remover um contato ao clicar no mesmo, exibindo ainda um alerta confirmando a operao;
  • Slide 35
  • + Aplicao 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
  • Slide 36
  • + Aplicao que visualiza imagens
  • Slide 37
  • + Aplicao que visualiza imagens v1.0 Dentro de res/drawable-mdpi: coala.jpg; farol.jpg; Adicionaremos tambm um LinearLayout do tipo Horizontal DENTRO do Layout padro, que contm um objeto ImageView.
  • Slide 38 ">
  • + Aplicao que visualiza imagens v1.0 Ao adicionar os elementos pelo Graphical Layout, altere as propriedades para ficarem como esto abaixo:
  • Slide 39
  • + Aplicao que visualiza imagens v1.0 No arquivo main.xml, adicionaremos os elementos em ordem: TextView id: @+id/txtinfo text: Foto 1 Button1 id: @+id/btimagem1 text: Exibir foto 1 layout_width: fill_parent Button2 id: @+id/btimagem2 text: Exibir foto 2 layout_width: fill_parent
  • Slide 40
  • + Aplicao que visualiza imagens v1.0 AppImage.java public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //Pega as referncias de todos os componentes da tela Button 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);
  • Slide 41
  • + Aplicao que visualiza imagens v1.0 btfoto1.setOnClickListener(new View.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"); } }); }
  • Slide 42
  • + Melhorando! Coloque mais 3 imagens na pasta res/drawable- mdpi; Faa a seleo das mesmas atravs de um Spinner; D a possibilidade do usurio editar o nome dessa imagem, que possui um valor default; Imagem 1, Imagem 2,...
  • Slide 43
  • + Aplicao 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
  • Slide 44
  • + Aplicao que visualiza imagens v1.1
  • Slide 45
  • + No arquivo main.xml, adicionaremos o elemento: Para essa aplicao, criaremos uma classe auxiliar: ImageAdapter. Gallery id: @+id/gallery layout_width: fill_parent
  • Slide 46
  • + Aplicao que visualiza imagens v1.1 ImageAdapter.java package 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; }
  • Slide 47
  • + Aplicao 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, View convertView, 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))); }
  • Slide 48
  • + Aplicao que visualiza imagens v1.0 AppGallery.java public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ((Gallery) findViewById(R.id.gallery)).setAdapter(new ImageAdapter(this)); }
  • Slide 49
  • + Melhorando! Coloque, na aplicao, outra galeria, e implemente dois botes que trocam as imagens de galeria
  • Slide 50
  • + Mudana de Layout Project Name: AppLayouts Package Name: br.org.citi.applayouts Create Activity: MainActivity Application Name: Visualizador de Imagens Build SDK: 16
  • Slide 51
  • + Mudana de Layout
  • Slide 52
  • + 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 Button id: @+id/bttelaprincipal layout_width: fill_parent text: Ir pata tela principal
  • Slide 53
  • + Mudana 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(); } }); }
  • Slide 54
  • + Mudana 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(); } }); }
  • Slide 55
  • + Mudana de Layout public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); CarregaTelaPrincipal(); }
  • Slide 56
  • + Aplicao de cadastro Project Name: AppCadastro Package Name: br.org.citi.appcadastro Create Activity: MainActivity Application Name: Cadastro Build SDK: 16
  • Slide 57
  • + Aplicao de cadastro
  • Slide 58
  • + main.xml Button Id: @+principal/btcadastrarpessoas layout_width: fill_parent text: Cadastrar pessoa Button Id: @+principal/btlistrarpessoas layout_width: fill_parent text: Listar pessoas cadastradas
  • Slide 59
  • + Aplicao de cadastro cadastro.xml TextView text: Mdulo de cadastro. Digite seus dados abaixo: TextView text: Nome: EditText id: @+cadastro/ednome layout_width: fill_parent TextView text: Profisso: EditText id: @+cadastro/edprofissao layout_width: fill_parent TextView text: Idade: EditText id: @+cadastro/edidade layout_width: fill_parent
  • Slide 60
  • + Aplicao de cadastro cadastro.xml LinearLayout orientation: horizontal layout_widith: fill_parent gravity: center Button id: @+cadastro/btcadastrar text: Cadastrar pessoa Button id: @+cadastro/btcancelar text: Cancelar
  • Slide 61
  • + Aplicao de cadastro listacadastrados.xml TextView text: Lista de pessoas cadastradas. textColor: #ffffff textSize: 20sp LinearLayout orientation: horizontal layout_widith: fill_parent id: @+id/layoutNome TextView text: Nome: textColor: #ffff00 textSize: 20sp TextView text: TextColor #ffffff textSize 20sp id: @+lista/txtnome
  • Slide 62
  • + Aplicao de cadastro listacadastrados.xml LinearLayout orientation: horizontal layout_widith: fill_parent id: @+id/layoutProfissao TextView text: Profissao: textColor: #ffff00 textSize: 20sp TextView text: TextColor #ffffff textSize 20sp id: @+lista/txtprofissao
  • Slide 63
  • + Aplicao de cadastro listacadastrados.xml LinearLayout orientation: horizontal layout_widith: fill_parent id: @+id/layoutIdade TextView text: Idade: textColor: #ffff00 textSize: 20sp TextView text: TextColor #ffffff textSize 20sp id: @+lista/txtidade
  • Slide 64
  • + Aplicao de cadastro listacadastrados.xml LinearLayout orientation: horizontal layout_widith: fill_parent gravity: center id: @+id/layoutBotoes Button id: @+lista/btvoltar text: Voltar Button id: @+lista/btavancar text: Avanar Button id: @+lista/btmenu layout_width: fill_parent text: Menu Princiapal
  • Slide 65
  • + Aplicao de cadastro Registro.java public class Registro { String nome; String profissao; String idade; Registro Prox; Registro Ant; }
  • Slide 66
  • + Aplicao de cadastro AppLayout.java void 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(); }}); }
  • Slide 67
  • + Aplicao 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);
  • Slide 68
  • + Aplicao 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"); }} });
  • Slide 69
  • + Aplicao de cadastro btcancelar.setOnClickListener(new View.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;
  • Slide 70
  • + Aplicao 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(); } });
  • Slide 71
  • + Aplicao 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); } });
  • Slide 72
  • + Aplicao 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); } }); }
  • Slide 73
  • + Aplicao 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(); }
  • Slide 74
  • + Melhorando! Vamos adicionar uma imagem associada pessoa cadastrada; Essa imagem deve ser escolhida de uma galeria (obviamente, contendo mais de uma imagem); Habilite a funo de edio, onde todos os dados sero alterados; DICA: Use a mesma tela do cadastro!