Boa noite pessoal, estou aprendendo Android e nada melhor do que desenvolver uma Calculadora =D
As funcionalidades estão praticamente todas desenvolvidas, agora preciso de dicas e ajuda para organizar meu código pois está um lixo, eu reconheço. Botei tudo dentro do método onCreate()…até comecei a fazer um método carregarComponentes ali mas não sei o que fazer pra organizar este código.
package br.com.calculadorak;
import java.text.DecimalFormat;
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.text.DecimalFormat;
import java.util.Locale;
public class MainActivity extends Activity {
public double numero1;
public double numero2;
public double total;
public DecimalFormat formatarResultadoInteiro, formatarResultadoDecimal;
public int operacao = 0;
public void carregarComponentes(){
Locale.setDefault(Locale.US); // configura o local para facilitar as operacoes com virgula =)
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
carregarComponentes();
final TextView visor = (TextView) findViewById(R.id.visor);
// Botões Numéricos
final Button btnNum0 = (Button) findViewById(R.btn.btnNum0);
final Button btnNum1 = (Button) findViewById(R.btn.btnNum1);
final Button btnNum2 = (Button) findViewById(R.btn.btnNum2);
final Button btnNum3 = (Button) findViewById(R.btn.btnNum3);
final Button btnNum4 = (Button) findViewById(R.btn.btnNum4);
final Button btnNum5 = (Button) findViewById(R.btn.btnNum5);
final Button btnNum6 = (Button) findViewById(R.btn.btnNum6);
final Button btnNum7 = (Button) findViewById(R.btn.btnNum7);
final Button btnNum8 = (Button) findViewById(R.btn.btnNum8);
final Button btnNum9 = (Button) findViewById(R.btn.btnNum9);
// Botões operações
final Button btnSomar = (Button) findViewById(R.btn.btnSomar);
final Button btnSubtrair = (Button) findViewById(R.btn.btnSubtrair);
final Button btnDividir = (Button) findViewById(R.btn.btnDividir);
final Button btnMultiplicar = (Button) findViewById(R.btn.btnMultiplicar);
// Outros botões
final Button btnEfetuarOperacao = (Button) findViewById(R.btn.btnEfetuarOperacao);
final Button btnLimpar = (Button) findViewById(R.btn.btnLimpar);
final Button btnApagar = (Button) findViewById(R.btn.btnApagar);
final Button btnPonto = (Button) findViewById(R.btn.btnPonto);
final Button btnMaisMenos = (Button) findViewById(R.btn.btnMaisMenos);
// Listeners - Números
btnNum0.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String valorAnterior = visor.getText().toString();
visor.setText(valorAnterior + btnNum0.getText().toString());
}
});
btnNum1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String valorAnterior = visor.getText().toString();
visor.setText(valorAnterior + btnNum1.getText().toString());
}
});
btnNum2.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String valorAnterior = visor.getText().toString();
visor.setText(valorAnterior + btnNum2.getText().toString());
}
});
btnNum3.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String valorAnterior = visor.getText().toString();
visor.setText(valorAnterior + btnNum3.getText().toString());
}
});
btnNum4.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String valorAnterior = visor.getText().toString();
visor.setText(valorAnterior + btnNum4.getText().toString());
}
});
btnNum5.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String valorAnterior = visor.getText().toString();
visor.setText(valorAnterior + btnNum5.getText().toString());
}
});
btnNum6.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String valorAnterior = visor.getText().toString();
visor.setText(valorAnterior + btnNum6.getText().toString());
}
});
btnNum7.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String valorAnterior = visor.getText().toString();
visor.setText(valorAnterior + btnNum7.getText().toString());
}
});
btnNum8.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String valorAnterior = visor.getText().toString();
visor.setText(valorAnterior + btnNum8.getText().toString());
}
});
btnNum9.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String valorAnterior = visor.getText().toString();
visor.setText(valorAnterior + btnNum9.getText().toString());
}
});
// Listeners - Operações
btnSomar.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (visor.getText().toString() != "") {
numero1 = Double.parseDouble(visor.getText().toString());
operacao = 1;
}
visor.setText("");
}
});
btnSubtrair.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (visor.getText().toString() != "") {
numero1 = Double.parseDouble(visor.getText().toString());
operacao = 2;
}
visor.setText("");
}
});
btnDividir.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (visor.getText().toString() != "") {
numero1 = Double.parseDouble(visor.getText().toString());
operacao = 3;
}
visor.setText("");
}
});
btnMultiplicar.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (visor.getText().toString() != "") {
numero1 = Double.parseDouble(visor.getText().toString());
operacao = 4;
}
visor.setText("");
}
});
// formatando numeros
formatarResultadoInteiro = new DecimalFormat("#");
formatarResultadoDecimal = new DecimalFormat("#.##");
btnEfetuarOperacao.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
switch (operacao) {
case 1:
numero2 = Double.parseDouble(visor.getText().toString());
total = numero1 + numero2;
if ((int)total == total) {
visor.setText(String.valueOf(formatarResultadoInteiro.format(total)));
} else {
visor.setText(String.valueOf(formatarResultadoDecimal.format(total)));
}
break;
case 2:
numero2 = Double.parseDouble(visor.getText().toString());
total = numero1 - numero2;
if ((int)total == total) {
visor.setText(String.valueOf(formatarResultadoInteiro.format(total)));
} else {
visor.setText(String.valueOf(formatarResultadoDecimal.format(total)));
}
break;
case 3:
numero2 = Double.parseDouble(visor.getText().toString());
total = numero1 / numero2;
if ((int)total == total) {
visor.setText(String.valueOf(formatarResultadoInteiro.format(total)));
} else {
visor.setText(String.valueOf(formatarResultadoDecimal.format(total)));
}
break;
case 4:
numero2 = Double.parseDouble(visor.getText().toString());
total = numero1 * numero2;
if ((int)total == total) {
visor.setText(String.valueOf(formatarResultadoInteiro.format(total)));
} else {
visor.setText(String.valueOf(formatarResultadoDecimal.format(total)));
}
break;
default:
break;
}
}
});
// Demais botoes
btnLimpar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
visor.setText("");
}
});
btnApagar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v){
String visorApg = visor.getText().toString();
try {
visorApg = visorApg.substring(0, visorApg.length() - 1);
} catch (Exception e) {} // Se a string for vazia ocorre erro StringIndexOutOfBoundsException
visor.setText(visorApg);
}
});
btnPonto.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String visorPonto = visor.getText().toString();
visorPonto += new String(".");
visor.setText(visorPonto);
}
});
btnMaisMenos.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
double visorSinal = Double.parseDouble(visor.getText().toString());
visorSinal *= -1;
if ((int)visorSinal == visorSinal) {
visor.setText(String.valueOf(formatarResultadoInteiro.format(visorSinal)));
} else {
visor.setText(String.valueOf(formatarResultadoDecimal.format(visorSinal)));
}
}
});
}
}