Sunday 1 September 2013

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 Simple Calculator

 Download apk file                        

                        Download Simple Calculator

                       

No comments:

Post a Comment