29 de out. de 2013

Mudar TextView com aplicação em Android

No post anterior, vimos como obter um conteúdo da interface Android para dentro do processamento em Java. Agora, o objetivo é processar algo e retornar para a interface, alterando-a conforme o resultado.

3 - Processando a resposta
O processamento é um raciocínio meramente algorítmico. Temos que criar um número aleatório e verificar se é ímpar ou par.:

  1. int numero = (new Random()).nextInt(50);
  2. int resultado = numero % 2;

A variável "numero" recebe um número aleatório criado pelo método nextInt (cujo parâmetro é o número máximo somado de 1, desde 0, que poderá ser sorteado, ou seja, nextInt(50) é um número entre 0 e 50, excluindo o 50) e que precisa da importação de java.util.Random, a própria IDE deve reclamar disso, pondo um ponto de erro na linha e uma sugestão de correção com a importação.

  1. import java.util.Random;

Este código vai na MainActivity.java, conforme explicado no post anterior.

4 - Exibindo a resposta modificando a interface
Usando uma interface simples, vamos alterar o texto "Hello World!" para "Cara" ou "Coroa", se a variável "resultado" for igual a 1 ou 0, respectivamente (ou vice-versa). Para alterar o conteúdo, é preciso armazenar o "ID" do elemento da interface usando o método findViewById. O código fica o seguinte:

  1.     /** Chamado ao pressionar OK */
  2.     public void processar(View view) {
  3.         TextView editText = (TextView) findViewById(R.id.textView1);
  4.         String mensagem = editText.getText().toString();
  5.         int numero = (new Random()).nextInt(50);
  6.         int resultado = numero % 2;
  7.         if(resultado == 0){
  8.                 mensagem = "Cara";
  9.         }
  10.         else{
  11.                 mensagem = "Coroa";
  12.         }
  13.         editText.setText(mensagem);
  14.     }

A variável "mensagem" é iniciada com o conteúdo "Hello World!" só para aproveitar o código do último post. Poderia ser vazia. A "editText" identifica o elemento (como um form) que contém o texto e possui um método para alterar o texto desse elemento, que é usado na última linha, o setText().

Vamos aprimorar a interface e, em vez de mostrar o resultado com texto, vamos mostrar uma moedinha mesmo (sem animações, só a figura mesmo, mais informações sobre figuras no site do Android Developer).

Primeiro, você deverá trazer suas figuras de cara e coroa para o acervo de imagens. Para isso, copie as imagens desejadas e, no Eclipse, na pasta res/drawable-hdpi (pode ser também mdpi ou ldpi, vi aqui), clique com o botão direito e cole. Atenção ao tamanho das figuras, que deve ser pequeno. Para mais informações, existe uma série de explicações no Android Developer. Quanto à extensão, consegui com .gif e com .png como pode ser visto na figura abaixo.

ic_action_cara.png foi uma tentativa frustrada de carregar
a imagem pelo Create New Icon do Eclipse.
Só consegui mesmo copiando e colando na pasta drawable
Volte ao activity_main.xml e escolha Graphical Layout. Clique na caixa suspensa "Image & Midia" e, em seguida, arraste para a tela do aplicativo o ImageView. Selecione uma imagem qualquer para ser a imagem inicial do programa (eu usei o ícone do programa). Conforme o resultado, essa imagem mudará para a imagem de cara ou de coroa seguindo os passos a seguir.

No MainActivity.java, antes do if que avalia o resultado, crie um objeto para receber a imagem padrão.

  1. ImageView imagem = (ImageView) findViewById(R.id.imageView1);

Dentro do correspondente if/else, mude o conteúdo do objeto para a imagem de cara ou de coroa:

  1. imagem.setImageResource(R.drawable.nome_arquivo_cara_ou_coroa); //OBS: Sem o .png

O método fica, então:

  1.  /** Chamado ao pressionar OK */
  2.     public void processar(View view) {
  3.         TextView editText = (TextView) findViewById(R.id.textView1);
  4.         String mensagem = editText.getText().toString();
  5.         ImageView imagem = (ImageView) findViewById(R.id.imageView1);
  6.         int numero = (new Random()).nextInt(50);
  7.         int resultado = numero % 2;
  8.         if(resultado == 0){
  9.                 mensagem = "Cara";
  10.                 imagem.setImageResource(R.drawable.cara);
  11.         }
  12.         else{
  13.                 mensagem = "Coroa";
  14.                 imagem.setImageResource(R.drawable.coroa);
  15.         }
  16.                 editText.setText(mensagem);
  17.     }

Resultado:

Tela Inicial

Apresentação do resultado

5 - Instalando o aplicativo no celular
No Eclipse, na esquerda, onde ele mostra os diretórios, vá em bin/res e copie o caraCoroa.apk (ou o nome que você deu a seu projeto) para o celular. Abra-o no celular e instale.

Fontes de Consulta:
Stack Overflow
Mkyong.com

10 comentários:

  1. I prefer to study this kind of material. Nicely written information in this post, the quality of content is fine and the conclusion is lovely. Things are very open and intensely clear explanation of issues
    Best software Training institute in Bangalore
    Best Linux Training institute in Bangalore
    Best Data Science institute in Bangalore

    ResponderExcluir
  2. Actually I read it yesterday but I had some thoughts about it and today I wanted to read it again because it is very well written.
    data analytics courses
    machine learning course malaysia
    big data analytics malaysia
    data science course

    ResponderExcluir
  3. It's really nice and meanful. it's really cool blog. Linking is very useful thing.you have really helped lots of people who visit blog and provide them usefull information.
    big data course malaysia
    data scientist course in malaysia
    data analytics courses
    360DigiTMG

    ResponderExcluir
  4. I have bookmarked your website because this site contains valuable information in it. I am really happy with articles quality and presentation. Thanks a lot for keeping great stuff. I am very much thankful for this site.
    Salesforce Training in Chennai

    Salesforce Online Training in Chennai

    Salesforce Training in Bangalore

    Salesforce Training in Hyderabad

    Salesforce training in ameerpet

    Salesforce Training in Pune

    Salesforce Online Training

    Salesforce Training

    ResponderExcluir
  5. Wonderful article, very useful and well explanation. Your post is extremely incredible. I will refer this to my candidates...data science courses

    ResponderExcluir
  6. Thanks for sharing this information. I really like your blog post very much. You have really shared a informative and interesting blog post .Signova Group

    ResponderExcluir
  7. Great explanation on how to change a TextView dynamically in an Android app by updating the UI text from Java code — very useful for beginners learning Android UI interactions. Check out this additional resource for learning more about related embedded systems topics like hardware-software interfacing: Embedded Systems Course In Hyderabad.

    ResponderExcluir