Android Simple Calculator
Calculator program structure...
main.xml file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="left|right"
android:orientation="vertical" >
<EditText
android:id="@+id/screen"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:cursorVisible="false"
android:editable="false"
android:gravity="right"
android:textSize="40dp"
android:text="0" >
</EditText>
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" >
<Button
android:id="@+id/buttonSqr"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:onClick="ButtonClickHandler"
android:text="√"
android:textColor="#228B22"
android:textSize="30dp" />
<Button
android:id="@+id/buttonOnediv"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:onClick="ButtonClickHandler"
android:text="1/x"
android:textColor="#228B22"
android:textSize="30dp" />
<Button
android:id="@+id/buttonMod"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:onClick="ButtonClickHandler"
android:text="%"
android:textColor="#228B22"
android:textSize="30dp" />
<Button
android:id="@+id/buttonPow"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:onClick="ButtonClickHandler"
android:text="^"
android:textColor="#228B22"
android:textSize="30dp" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout2"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" >
<Button
android:id="@+id/button1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:onClick="ButtonClickHandler"
android:text="1"
android:textColor="#000000"
android:textSize="30dp" />
<Button
android:id="@+id/button2"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:onClick="ButtonClickHandler"
android:text="2"
android:textColor="#000000"
android:textSize="30dp" />
<Button
android:id="@+id/button3"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:onClick="ButtonClickHandler"
android:text="3"
android:textColor="#000000"
android:textSize="30dp" />
<Button
android:id="@+id/buttonAdd"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:onClick="ButtonClickHandler"
android:text="+"
android:textColor="#228B22"
android:textSize="30dp" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout3"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" >
<Button
android:id="@+id/button4"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:onClick="ButtonClickHandler"
android:text="4"
android:textColor="#000000"
android:textSize="30dp" />
<Button
android:id="@+id/button5"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:onClick="ButtonClickHandler"
android:text="5"
android:textColor="#000000"
android:textSize="30dp" />
<Button
android:id="@+id/button6"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:onClick="ButtonClickHandler"
android:text="6"
android:textColor="#000000"
android:textSize="30dp" />
<Button
android:id="@+id/buttonSub"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:onClick="ButtonClickHandler"
android:text="-"
android:textColor="#228B22"
android:textSize="30dp" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout4"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" >
<Button
android:id="@+id/button7"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:onClick="ButtonClickHandler"
android:text="7"
android:textColor="#000000"
android:textSize="30dp" />
<Button
android:id="@+id/button8"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:onClick="ButtonClickHandler"
android:text="8"
android:textColor="#000000"
android:textSize="30dp" />
<Button
android:id="@+id/button9"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:onClick="ButtonClickHandler"
android:text="9"
android:textColor="#000000"
android:textSize="30dp" />
<Button
android:id="@+id/buttonMulti"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:onClick="ButtonClickHandler"
android:text="x"
android:textColor="#228B22"
android:textSize="30dp" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout5"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" >
<Button
android:id="@+id/buttonPoint"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:onClick="ButtonClickHandler"
android:text="."
android:textColor="#228B22"
android:textSize="30dp" />
<Button
android:id="@+id/button0"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:onClick="ButtonClickHandler"
android:text="0"
android:textColor="#000000"
android:textSize="30dp" />
<Button
android:id="@+id/buttonDel"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:onClick="ButtonClickHandler"
android:text="del"
android:textColor="#FF4500"
android:textSize="30dp" />
<Button
android:id="@+id/buttonDiv"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:onClick="ButtonClickHandler"
android:text="/"
android:textColor="#228B22"
android:textSize="30dp" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout6"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" >
<Button
android:id="@+id/buttonClear"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:onClick="ButtonClickHandler"
android:text="C"
android:textColor="#FF4500"
android:textSize="30dp" />
<Button
android:id="@+id/buttonExe"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:onClick="ButtonClickHandler"
android:text="="
android:textColor="#228B22"
android:textSize="40dp" />
</LinearLayout>
</LinearLayout>
CalculatorActivity.java
package android.calculator;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.*;
public class CalculatorActivity extends Activity {
/** Called when the activity is first created. */
boolean clear_screen = true;
boolean operator_state = false ;
boolean insert_state = false;
boolean last_click = false;
float Operand1 = 0f;
float Operand2 = 0f;
float Answer = 0f;
String Operator = "";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void insert_text(String text){
EditText screen = (EditText) findViewById(R.id.screen);
if (this.clear_screen){
screen.setText("");
this.clear_screen = false;
}
this.insert_state = true;
this.last_click = true;
screen.append(text);
}
public void set_operator(String operator){
EditText screen = (EditText) findViewById(R.id.screen);
if (screen.getText().toString().equals(".")) screen.setText("0");
if (this.insert_state && this.operator_state && this.last_click){
calculator();
}
if (screen.getText().toString().length() > 0 ){
this.Operand1 = Float.parseFloat(screen.getText().toString());
}
this.operator_state = true;
this.clear_screen = true;
this.last_click = false;
if (operator.equals("+")) this.Operator = "+";
else if (operator.equals("-")) this.Operator = "-";
else if (operator.equals("*")) this.Operator = "*";
else if (operator.equals("/")) this.Operator = "/";
else if (operator.equals("√")){
this.Answer = (float) Math.sqrt(Float.parseFloat(screen.getText().toString()));
screen.setText(this.Answer + "");
this.clear_screen = true;
this.Operand1 = 0f;
this.Operand2 = 0f;
this.Operator = "";
this.last_click = true;
this.operator_state = false ;
}else if (operator.equals("d")){
this.Answer = 1 / Float.parseFloat(screen.getText().toString());
screen.setText(this.Answer + "");
this.clear_screen = true;
this.Operand1 = 0f;
this.Operand2 = 0f;
this.Operator = "";
this.last_click = true;
this.operator_state = false ;
}
else if (operator.equals("^")) this.Operator = "^";
else if (operator.equals("%")) this.Operator = "%";
}
public void calculator(){
EditText screen = (EditText) findViewById(R.id.screen);
if (screen.getText().toString().equals(".")){
screen.setText("0");
}
if (screen.getText().toString().length() > 0){
this.Operand2 = Float.parseFloat(screen.getText().toString());
}
if (this.Operator.equals("+")) {
this.Answer = this.Operand1 + this.Operand2;
} else if (this.Operator.equals("-")){
this.Answer = this.Operand1 - this.Operand2;
} else if (this.Operator.equals("*")){
this.Answer =this.Operand1 * this.Operand2;
} else if (this.Operator.equals("/")){
this.Answer = this.Operand1 / this.Operand2;
}else if (this.Operator.equals("^")){
this.Answer = (float) Math.pow(this.Operand1, this.Operand2);
}else if (this.Operator.equals("%")){
this.Answer = Operand1 % this.Operand2;
}else{
this.Answer = Float.parseFloat(screen.getText().toString());
}
screen.setText(this.Answer + "");
}
public void ButtonClickHandler(View v){
EditText screen = (EditText) findViewById(R.id.screen);
switch(v.getId()){
case R.id.button0 : insert_text("0"); break;
case R.id.button1 : insert_text("1"); break;
case R.id.button2 : insert_text("2"); break;
case R.id.button3 : insert_text("3"); break;
case R.id.button4 : insert_text("4"); break;
case R.id.button5 : insert_text("5"); break;
case R.id.button6 : insert_text("6"); break;
case R.id.button7 : insert_text("7"); break;
case R.id.button8 : insert_text("8"); break;
case R.id.button9 : insert_text("9"); break;
case R.id.buttonPoint :
if (!screen.getText().toString().contains(".") || this.operator_state){
insert_text(".");
}
break;
case R.id.buttonAdd : set_operator("+"); break;
case R.id.buttonSub : set_operator("-"); break;
case R.id.buttonMulti: set_operator("*"); break;
case R.id.buttonDiv: set_operator("/"); break;
case R.id.buttonSqr: set_operator("√"); break;
case R.id.buttonPow: set_operator("^"); break;
case R.id.buttonMod: set_operator("%"); break;
case R.id.buttonOnediv: set_operator("d"); break;
case R.id.buttonExe:
if(screen.getText().toString().length() > 0 && this.Operator != ""){
calculator();
this.clear_screen = true;
this.Operand1 = 0f;
this.Operand2 = 0f;
this.Operator = "";
this.operator_state = false ;
}
break;
case R.id.buttonDel:
if(screen.getText().toString().length() > 1){
String screen_new = screen.getText().toString().substring(0, screen.getText().toString().length()-1);
screen.setText(screen_new);
this.clear_screen = false;
}else{
screen.setText("0");
this.clear_screen = true;
}
break;
case R.id.buttonClear:
this.Operand1 = 0f;
this.Operand2 = 0f;
this.Answer = 0f;
this.Operator = "";
this.operator_state = false ;
this.insert_state = false;
this.last_click = false;
this.clear_screen = true;
screen.setText("0");
break;
}
}
}
Output
Download Source Code
Download apk file
No comments:
Post a Comment