segunda-feira, 18 de março de 2013

Calculadora




Boa tarde pessoal, os posts nesse início de blog estão sofrendo um atraso incômodo por causa da minha falta de tempo devido ao trabalho, mas estarei fazendo o possível para estar trazendo para vocês os novos posts sem demora.
Hoje aprenderemos a fazer uma calculadora simples, com as quatro operações básicas.
Crie um novo projeto com as informações conforme a imagem abaixo:




Interface
Para construir a interface gráfica utilizaremos o layout TableLayout  e o TableRow. O TabletLayout é um layout que organiza os componentes na forma de tabelas com linhas e colunas o componente TabletRow representa as linhas dessa tabela.
Exclua o arquivo xml da pasta layout da aplicação e crie-o novamente com o TableLayout:
Vá até a pasta res do projeto abra a pasta layout, clique com o botão direito do mouse no arquivo xml do projeto e clique em delete.



Criando arquivo xml
Clique com botão direito na pasta layout > new > Android XML File:




Depois de criado o arquivo de layout, clique com o botão direito do mouse no layout e depois em addRow, criamos a primeira linha do projeto TableRow1, repita esse processo mais 5 vezes.
Configura as seguintes propriedades do Tablelayout:

  • Stretch Columns: 0,1,2,3;
  • Padding: 5dp;

Na primeira linha coloque um componente EditText com os seguintes valores nos parâmetros id e text:

  • Id: txt_visor;
  • Texto: 0.0;

Na segunda linha coloque quatro Buttons com os seguintes valores nos parâmetros id e text:

  • Id: bt_7, bt_8, bt_9 e bt_divi;
  • Text: 7, 8, 9, /;

Na terceira linha coloque quatro Buttons com os seguintes valores nos parâmetros id e text:

  • Id: bt_4, bt_5, bt_6 e bt_mult;
  • Text: 4, 5, 6  ,  *;

Na quarta linha coloque quatro Buttons com os seguintes valores nos parâmetros id e text:

  • Id: bt_1, bt_2, bt_3 e bt_subt;
  • Text: 1, 2, 3  ,  -;

Na quinta linha coloque quatro Buttons com os seguintes valores nos parâmetros id e text:

  • Id: bt_ponto, bt_0, bt_igual e bt_soma;
  • Text: ., 0,  =  , +-;

Se todos os passos até aqui foram feitos corretamente, a interface pronte deve ser igual a imagem abaixo:


Implementando as funções da calculadora

Vamos agora criar as funções para efetuar operações na calculadora.

Variáveis a serem utilizadas na aplicação:


Inicializa os componentes da tela:


Trata os eventos dos componentes na tela:




Teclado numérico:

Para efetuarmos uma operação na calculadora primeiramente criaremos a função que faz o teclado numérico da calculadora funcionar.


Inserir ponto, limpar visor e armazenar operações:


Efetuar operações:



Fechar aplicativo:


Eventos dos componentes

Adicione um implements onClickListener a classe:


O nome da classe vai ficar sublinhado de vermelho, vefique o erro e note que ele pedirá para incluir métodos complementares, adicione esse método então aparecerá um novo método noa classe chamado onClick implemente esse método da seguinte forma:




Se tudo foi feito corretamente é só executar e testar a aplicação:



Segue abaixo o link com os códigos do aplicativo calculadora e calculadora de gorjetas do post anterior:
Atualização: o link do projeto calculadora está no github e foi desenvolvido com anroid studio, estarei atualizando os projetos para o android studio e enviando para o github a começar por este.


 Até a próxima!

sábado, 9 de março de 2013

Calculadora de Gorjetas

Bom dia a todos, bem vindos ao blog Códigos Android!
Vou mostar a vocês, nessa primeira postagem, como fazer uma Calculadora de Gorjetas simples no android.

Interface Gráfica
Segue a baixo o código xml da interfece main.xml do nosso aplicativo:

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="1dp"
    tools:context=".Main" >

    <TableRow
        android:id="@+id/tableRow0"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/lblTotalDaConta"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_column="0"
            android:gravity="right"
            android:paddingRight="5dp"
            android:text="@string/total_conta" />

        <EditText
            android:id="@+id/txtTotalDaConta"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_span="3"
            android:layout_weight="1"
            android:inputType="numberDecimal"
            android:text="0.00" >

            <requestFocus />
        </EditText>
    </TableRow>

    <TableRow
        android:id="@+id/tableRow1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <RadioGroup
            android:id="@+id/radioGorjetas"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_column="0"
            android:layout_span="4"
            android:layout_weight="1" >

            <RadioButton
                android:id="@+id/rb10RadioButton"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:checked="true"
                android:text="10%" />

            <RadioButton
                android:id="@+id/rb15RadioButton"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="15%" />

            <RadioButton
                android:id="@+id/rb20RadioButton"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="20%" />
        </RadioGroup>

    </TableRow>

    <TableRow
        android:id="@+id/tableRow2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <Button
            android:id="@+id/btCalcularGorjeta"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/calcular" />

    </TableRow>

</TableLayout>
   
Interface Finalizada




Código
Segue abaixo o código da aplicação.

public class Main extends Activity implements OnClickListener {

    /* Váriaval double para calcular o total da conta com acréscimo de gorjeta
         e os componentes utilizados nesse aplicativo */
    private double valorTotalDaConta;
    private EditText txtTotalDaConta;
    private RadioGroup radioGorjetas;
    private RadioButton rb10RadioButton;
    private RadioButton rb15RadioButton;
    private RadioButton rb20RadioButton;
    private Button btCalcularGorjeta;

   
    @Override
    protected void onCreate(Bundle savedInstanceState) {
       
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        /* Chama o método inicializar que inicializa os componentes da tela */
        inicializar();
        /* Chama o método listenes que trata os eventos na tela, nesse caso o evento do botão Calcular*/
        listenres();
       
    }

/* Inicializa os componnentes da tela */
    private void inicializar() {

        txtTotalDaConta = (EditText) findViewById(R.id.txtTotalDaConta);
        radioGorjetas = (RadioGroup) findViewById(R.id.radioGorjetas);
        rb10RadioButton = (RadioButton) findViewById(R.id.rb10RadioButton);
        rb15RadioButton = (RadioButton) findViewById(R.id.rb15RadioButton);
        rb20RadioButton = (RadioButton) findViewById(R.id.rb20RadioButton);
        btCalcularGorjeta = (Button) findViewById(R.id.btCalcularGorjeta);

    }

    /* Trata os eventos dos componentes na tela (Apenas o Botão Calcular) */
    private void listenres(){
       
        btCalcularGorjeta.setOnClickListener(this);
       
    }

/* Calcula o total da conta com o acréscimo do percentual desejado */
    private double calculaPercentualTotal(int percentual) {

        double percentualCalculado = 0.0;
       
        if(percentual == 10){
           
            /* Caucula o total da conta com gorjeta de 10% */
            double dezPorcentoPersonalizado = valorTotalDaConta * .1;
            double dezPorcentoTotal = valorTotalDaConta + dezPorcentoPersonalizado;
            percentualCalculado = dezPorcentoTotal;
           
        }else if(percentual == 15){
           
            /* Calcula o total da conta com gorjeta de 15% */
            double quinzePorcentoPersonalizado = valorTotalDaConta * .15;
            double quinzePorcentoTotal = valorTotalDaConta
                    + quinzePorcentoPersonalizado;
            percentualCalculado =  quinzePorcentoTotal;
           
        }else if(percentual == 20){
           
            /* Calcula o total da conta com gorjeta de 20% */
            double vintePorcentoPersonalizado = valorTotalDaConta * .20;
            double vintePorcentoTotal = valorTotalDaConta
                    + vintePorcentoPersonalizado;
            percentualCalculado = vintePorcentoTotal;
           
        }else{
           
            percentualCalculado = 0.0;
           
        }

        return percentualCalculado;
       
    }

/* Calcula o percentual de gorjeta */
    private double calculaPercentual(int percentual) {

        double percentualCalculado = 0.0;
       
        if(percentual == 10){
           
            /* Caucula gorjeta de 10% */
            double dezPorcentoPersonalizado = valorTotalDaConta * .1;
            percentualCalculado = dezPorcentoPersonalizado;
           
        }else if(percentual == 15){
           
            /* Calcula gorjeta de 15% */
            double quinzePorcentoPersonalizado = valorTotalDaConta * .15;
            percentualCalculado =  quinzePorcentoPersonalizado;
           
        }else if(percentual == 20){
           
            /* Calcula gorjeta de 20% */
            double vintePorcentoPersonalizado = valorTotalDaConta * .20;
            percentualCalculado = vintePorcentoPersonalizado;
           
        }else{
           
            percentualCalculado = 0.0;
           
        }

        return percentualCalculado;
       
    }
   
    /* Converte o valor de txtTotalDaConto em uma variável double */
    private double mostraTotal(){
       
        try{
           
            valorTotalDaConta = Double.parseDouble(txtTotalDaConta.getText().toString());
           
        }catch(NumberFormatException e){
           
            /* Padrão se ocorrer uma execeção */
            valorTotalDaConta = 0.0;
           
        }
       
        return valorTotalDaConta;
       
    }

/* Método usado para exibir uma caixa de dialogo informando o total da conta, o percentual da gorjeta
     * e o total com acréscimo do valor da gorjeta */
    private void dialog(String titulo, String mensagem){
       
        final AlertDialog dialog = new AlertDialog.Builder(this).create();
       
        dialog.setButton(AlertDialog.BUTTON_NEUTRAL, "Ok", new
DialogInterface.OnClickListener() {
           
            @Override
            public void onClick(DialogInterface arg0, int arg1) {
               
                dialog.dismiss();
               
            }
           
        });
       
        dialog.setTitle(titulo);
        dialog.setMessage(mensagem);
        dialog.setIcon(android.R.drawable.ic_menu_info_details);
        dialog.show();
       
    }

/* Implementa o evento do botão calcular de acordo com o radiobutton selecionado */
    @Override
    public void onClick(View v) {

        switch(radioGorjetas.getCheckedRadioButtonId()){
       
        case R.id.rb10RadioButton:
       
            dialog("Total com acréscimo de 10%", "Total: " + "R$ " + String.format("%.02f", mostraTotal()) + "\n"
            + "10%: " + "R$ " + String.format("%.02f", calculaPercentual(10)) + "\n"
            + "Total + 10%: " + "R$ " + String.format("%.02f", calculaPercentualTotal(10)));
            break;
           
        case R.id.rb15RadioButton:
           
            dialog("Total com acréscimo de 15%", "Total: " + "R$ " + String.format("%.02f", mostraTotal()) + "\n"
                    + "15%: " + "R$ " +  String.format("%.02f", calculaPercentual(15)) + "\n"
                    + "Total + 15%: " + "R$ " + String.format("%.02f", calculaPercentualTotal(15)));
            break;
           
        case R.id.rb20RadioButton:
           
            dialog("Total com acréscimo de 20%", "Total: " + "R$ " + String.format("%.02f", mostraTotal()) + "\n"
                    + "20%: " + "R$ " + String.format("%.02f", calculaPercentual(20)) + "\n"
                    + "Total + 20%: " + "R$ " +  String.format("%.02f", calculaPercentualTotal(20)));
            break;
           
        default:
           
            valorTotalDaConta = 0.0;
            break;
           
        }
       
    }

}

Resultado:

Calculo de Gorjeta de 10%
Calculo de Gorjeta de 15%
Calculo de Gorjeta de 20%