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

9 comentários:

NareshIT disse...

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

nakshatra disse...

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

shri disse...

Awesome post...
internship report on python
free internship in chennai for ece students
free internship for bca
internship for computer science engineering students in india
internships in hyderabad for cse students 2018
electrical companies in hyderabad for internship
internships in chennai for cse students 2019
internships for ece students
inplant training in tcs chennai
internship at chennai

shalini disse...

good....nice
category/advocate-resume
category/agriculture-forestry-fishing
category/android-developer-resume
category/assistant-professor-resume
category/chartered-accountant-resume
category/database-resume
category/design-engineer-resume
category/developer-resume
category/engineer-resume
category/entrepreneur-and-financial-services-resume

tejaswini disse...

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

vijay disse...

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

EXCELR disse...

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

Ramesh Sampangi disse...

Informative blog, big thumbs up for sharing this blog with us.
Data Science Institute in Hyderabad

Peter Johnson disse...

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

Quem sou eu

Raphael Fernandes
Carioca, Brasileiro, Estudante de Robótica
Hiperativo, Imperativo
Gosto de tecnologia, de transporte, de Rock, de reclamar e de propagandas criativas (e outras coisas que posso ter falado em um post ou não)
Musicalmente falando, sou assim.

Related Posts Plugin for WordPress, Blogger...

Veja também...