quinta-feira, 2 de dezembro de 2010

Simples aplicação de Soma

Olá pessoas.

Aqui irei mostrar como criar uma simples aplicação de soma. Duas caixas para a entrada de dados, um botão de soma e uma caixa para o resultado.



Crie um novo projeto Android, conforme já citado neste blog.
Vamos primeiro editar o arquivo main.xml, que será o layout da nossa página.

main.xml

    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/insert_num1" >
    
    
        android:id="@+id/num1"
        android:inputType="number"
        android:numeric="integer"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >
    
    
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/insert_num2" >
    
    
        android:id="@+id/num2"
        android:inputType="number"
        android:numeric="integer"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >
    
    
    
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/result" >
    
    
        android:id="@+id/result"
        android:editable="false"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >
    

Como você bem sabe, neste arquivo está descrito os componentes que teremos nesta página.
A ordem de exibição destes componentes será a mesma que apresentados neste documento.
Estamos trabalhando com 3 tipos de componentes neste tela, os EditText que são caixas de entrada de dados, TextView que são textos que serão exibidos na tela e o Button que será o botão que iremos clicar para efeutar a conta.
Os EditText tem como atributos, o seu identificador (android:id) para que possamos identificar cada caixa no código java na hora de fazermos as contas,os atributos de altura (android:layout_height) e largura (android:layout_width) e como novidade, o android:inputType="number"que identifica que este campo só receberá caracteres de texto e o android:numeric="integer" que identifica que só receberá números inteiros, no caso, a grosso modo, números sem casas decimais.
O Button, além dos atributos básicos como identificador, largura e altura, tem android:text que corresponde qual será o texto do botão. Como usamos a internacionalização de Strings, neste atributo só fica o código da String que será usada. Você poderá ver o texto em si, no arquivo string.xml.
Também no Button, temos o android:layout_gravity="center" que indicará que o botão deverá ficar no centro da tela.
Por fim, temos os TextView, que são simples componente de texto, contem um identificador de string que será os eu respectivo valor. Nada mais.

string.xml

    Projeto Soma
    Insira o primeiro número:
    Insira o segundo número:
    Soma dos números
    Soma

Neste arquivo, conforme já dizemos, ele guarda os valores das Strings usadas na aplicação.
No caso, ele contém todas as Strings usadas no main.xml, descrito acima. Para usar o valor que está nesta aplicação no main.xml, só basta colocarmos @string/IDENTIFICADOR_DA_STRING e o texto será inserido na tela.

Vamos agora falar de toda "mágica" que acontece no código Java.
 Soma.java
package com.projetosoma;
package com.projetosoma;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class Soma extends Activity {

 // (1) Declarando os componentes da tela
 EditText num1 = null;
 EditText num2 = null;
 EditText result = null;

 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);

  // (2) Mapeando os componentes
  num1 = (EditText) findViewById(R.id.num1);
  num2 = (EditText) findViewById(R.id.num2);
  result = (EditText) findViewById(R.id.result);

  Button btnSum = (Button) findViewById(R.id.btnsomar);

  // (3) Adicionanro Listener
  btnSum.setOnClickListener(new OnClickListener() {

   @Override
   public void onClick(View v) {

    // (4) Recuperando os dados que foram inseridos na tela
    int number1 = Integer.valueOf(num1.getText().toString());
    int number2 = Integer.valueOf(num2.getText().toString());
    int res = number1 + number2;

    // (5) Adicionando o valor ao componente
    result.setText(String.valueOf(res));
   }
  });
 }

}

Vamos ao que fizemos neste código:
Primeiro declaramos no código Java, os componentes que usamos na página (1). No caso, as duas caixas de entrada e a caixa de saída.
Depois disso, temos que mapear os componentes que usamos no layout (2). Para isso usamos o método findViewById(), passando como parâmetro o ID que foi definido no main.xml, que no nosso caso, é R.id.ID_COMPONENTE. Lembrando a explicação da classe R.java, que faz o link dos componentes XML para o código Java.
Quando recuperamos um componente da tela, ele não vai ser do mesmo tipo que o componente que declaramos no Java, por isso, temos que utilizar da técnica chamada Cast, que consiste em colocar entre parênteses o tipo do objeto antes de realmente atribui-los ao novo objeto, como podemos ver no exemplo.
Depois de associarmos os componentes aos objetos java, temos que adicionar um Listener ao objeto que recebeu o valor do botão Ok (3). Este Listener, o setOnClickListener() é um atributo que adicionamos ao botão que ficará "ouvindo" o evento de click dele. Quando este for clicado, este Listener "ouvirá" e fará alguma ação que definimos logo abaixo.
Dentro da ação onClick() que foi disparada quando o usuário clicou no botão, recuperamos os dados que estão nos objetos dos componentes da tela e salvamos em variáveis, para realizarmos os calculos. (4)
Para recuperarmos o valor que está dentro do objeto correspondendo ao componente, devemos usar o método getText().toString(), que irá nos retornar em forma de String, o que está digitado no campo, porém, não podemos realizar contas com Strings, então usamos a classe Integer e o método para .valueOf() para convertermos este valor em um inteiro, e ai sim, podemos fazer a soma propriamente dita.
E por fim, salvamos o resultado desta soma dentro do objeto correspondente à caixa de soma da nossa aplicação através do método setText(), para que seja exibida na tela do aparelho. Repare que novamente temos que converter o valor que está em número inteiro(int) para String, que é o que o método setText() aceita.

Neste caso, não é necessário mudanças no AndroidManifest.xml.

Se você seguiu a explicação acima e rodou a aplicação, a tela ficará assim:


Pronto.
Você acaba de criar uma simples aplicação de soma e agora pode "brincar" com os componentes, sabe como recuperar seus valores e trabalhar com eles como quiser na classe Java.
Divirta-se neste novo mundo. :)

2 comentários:

  1. foi o melhor primeiro exemplo de android que já simples e fácil de entender parabéns!

    ResponderExcluir
  2. como? como que programa?

    ResponderExcluir