Calculadora de Gorjetas

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% 

Inscreva-se para receber


1 comentários:

.