Developing calculator Android Application

Practical - 9
Develop calculator Android Application.



Code:
MainActivity.java
package com.believe.calculator;

import android.os.Build;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.TextView;

import java.text.DecimalFormat;

public class MainActivity extends AppCompatActivity {

    Button mone;
    Button mtwo;
    Button mthree;
    Button mfour;
    Button mfive;
    Button msix;
    Button mseven;
    Button meight;
    Button mnine;
    Button mzero;
    Button mdot;
    Button mplus;
    Button mminus;
    Button mmultiply;
    Button mdevide;
    Button mequal;
    Button mallClear;
    Button mclear;
    Button mpercent;
    Button msign;
    TextView mdisplay;
    TextView moperator;
    DecimalFormat decimalFormat = new DecimalFormat("#.##########");

    private double valueOne=Double.NaN;
    private double valueTwo=0;

    private static final char ADDITION = '+';
    private static final char SUBTRACTION = '-';
    private static final char MULTIPLICATION = '*';
    private static final char DIVISION = '/';
    private static final char PERCENT = '%';

    private char CURRENT_ACTION;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mdisplay=(TextView)findViewById(R.id.tv_display);
        moperator=(TextView)findViewById(R.id.tv_op);
        mone=(Button)findViewById(R.id.bt_1);
        mtwo=(Button)findViewById(R.id.bt_2);
        mthree=(Button)findViewById(R.id.bt_3);
        mfour=(Button)findViewById(R.id.bt_4);
        mfive=(Button)findViewById(R.id.bt_5);
        msix=(Button)findViewById(R.id.bt_6);
        mseven=(Button)findViewById(R.id.bt_7);
        meight=(Button)findViewById(R.id.bt_8);
        mnine=(Button)findViewById(R.id.bt_9);
        mzero=(Button)findViewById(R.id.bt_0);
        mdot=(Button)findViewById(R.id.bt_dot);
        mplus=(Button)findViewById(R.id.bt_plus);
        mminus=(Button)findViewById(R.id.bt_minus);
        mmultiply=(Button)findViewById(R.id.bt_multi);
        mdevide=(Button)findViewById(R.id.bt_device);
        mequal=(Button)findViewById(R.id.bt_equal);
        mallClear=(Button)findViewById(R.id.bt_ac);
        mclear=(Button)findViewById(R.id.bt_c);
        mpercent=(Button)findViewById(R.id.bt_percent);
        msign=(Button)findViewById(R.id.bt_sign);


        mone.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String temp=mdisplay.getText().toString();
                if(temp.length()<9)
                mdisplay.setText(temp+"1");
            }
        });


        mtwo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String temp=mdisplay.getText().toString();
                if(temp.length()<9)
                mdisplay.setText(temp+"2");
            }
        });

        mthree.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String temp=mdisplay.getText().toString();
                if(temp.length()<9)
                mdisplay.setText(temp+"3");
            }
        });
        mfour.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String temp=mdisplay.getText().toString();
                if(temp.length()<9)
                mdisplay.setText(temp+"4");
            }
        });
        mfive.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String temp=mdisplay.getText().toString();
                if(temp.length()<9)
                mdisplay.setText(temp+"5");
            }
        });
        msix.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String temp=mdisplay.getText().toString();
                if(temp.length()<9)
                mdisplay.setText(temp+"6");
            }
        });
        mseven.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String temp=mdisplay.getText().toString();
                if(temp.length()<9)
                mdisplay.setText(temp+"7");
            }
        });
        meight.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String temp=mdisplay.getText().toString();
                if(temp.length()<9)
                mdisplay.setText(temp+"8");
            }
        });
        mnine.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String temp=mdisplay.getText().toString();
                if(temp.length()<9)
                mdisplay.setText(temp+"9");
            }
        });
        mzero.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String temp=mdisplay.getText().toString();
                if(temp.length()<9 && !temp.equals("0"))
                mdisplay.setText(temp+"0");
            }
        });
        mdot.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String temp=mdisplay.getText().toString();
                if(temp.length()<9)
                mdisplay.setText(temp+".");
            }
        });

        mallClear.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mdisplay.setText(null);
                moperator.setText(null);
            }
        });

        mclear.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String temp=mdisplay.getText().toString();
                if(!temp.equals(""))
                {
                    temp = temp.substring(0, temp.length() - 1);
                    mdisplay.setText(temp);
                }
            }
        });

        mplus.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String temp=moperator.getText().toString();
                if(!temp.equals("") && mdisplay.getText().toString().equals("")) {
                    char c = temp.charAt(temp.length() - 1);
                    if (isOperator(c)) {
                        String t = temp.substring(0, temp.length() - 1);
                        t = t + "+";
                        moperator.setText(t);
                    }
                }
                else {
                    moperator.setText(moperator.getText().toString() + mdisplay.getText().toString() + "+");
                }
                computeCalculation();
                CURRENT_ACTION = ADDITION;
                mdisplay.setText(null);

            }
        });
        mminus.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String temp=moperator.getText().toString();
                if(!temp.equals("") && mdisplay.getText().toString().equals("")) {    char c = temp.charAt(temp.length() - 1);
                    if (isOperator(c)) {
                        String t = temp.substring(0, temp.length() - 1);
                        t = t + "-";
                        moperator.setText(t);
                    }
                }
                else {
                    moperator.setText(moperator.getText().toString() + mdisplay.getText().toString() + "-");
                }computeCalculation();
                CURRENT_ACTION = SUBTRACTION;
                mdisplay.setText(null);
            }
        });
        mdevide.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String temp=moperator.getText().toString();
                if(!temp.equals("") && mdisplay.getText().toString().equals("")) {    char c = temp.charAt(temp.length() - 1);
                    if (isOperator(c)) {
                        String t = temp.substring(0, temp.length() - 1);
                        t = t + "/";
                        moperator.setText(t);
                    }
                }
                else {
                    moperator.setText(moperator.getText().toString() + mdisplay.getText().toString() + "/");
                }computeCalculation();
                CURRENT_ACTION = DIVISION;
                mdisplay.setText(null);
            }
        });
        mmultiply.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String temp=moperator.getText().toString();
                if(!temp.equals("") && mdisplay.getText().toString().equals("")) {    char c = temp.charAt(temp.length() - 1);
                    if (isOperator(c)) {
                        String t = temp.substring(0, temp.length() - 1);
                        t = t + "x";
                        moperator.setText(t);
                    }
                }
                else {
                    moperator.setText(moperator.getText().toString() + mdisplay.getText().toString() + "x");
                }computeCalculation();
                CURRENT_ACTION = MULTIPLICATION;
                mdisplay.setText(null);
            }
        });

        mpercent.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String temp=moperator.getText().toString();
                if(!temp.equals("") && mdisplay.getText().toString().equals("")) {    char c = temp.charAt(temp.length() - 1);
                    if (isOperator(c)) {
                        String t = temp.substring(0, temp.length() - 1);
                        t = t + "%";
                        moperator.setText(t);
                    }
                }
                else {
                    moperator.setText(moperator.getText().toString() + mdisplay.getText().toString() + "%");
                }computeCalculation();
                CURRENT_ACTION = PERCENT;
                mdisplay.setText(null);
            }
        });

        mequal.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                computeCalculation();
                mdisplay.setText(decimalFormat.format(valueOne));
                moperator.setText(null);
                valueOne = Double.NaN;
                CURRENT_ACTION = '0';
            }
        });

        msign.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String temp=mdisplay.getText().toString();
                if(!temp.equals("") && !temp.equals("0") )
       {
       if(temp.charAt(0)=='-')
                {
                    temp=temp.substring(1,temp.length());
                }
                else
                {
                    temp="-"+temp;
                }
                mdisplay.setText(temp);
}
            }
        });
    }

    private void computeCalculation() {
        if(!Double.isNaN(valueOne)) {
            if(!mdisplay.getText().toString().equals(""))
            valueTwo = Double.parseDouble(mdisplay.getText().toString());
            else
                if(CURRENT_ACTION == ADDITION || CURRENT_ACTION == SUBTRACTION)
                    valueTwo=0;
                else if(CURRENT_ACTION == DIVISION || CURRENT_ACTION == MULTIPLICATION)
                    valueTwo=1;
            mdisplay.setText(null);

            if(CURRENT_ACTION == ADDITION)
                valueOne = this.valueOne + valueTwo;
            else if(CURRENT_ACTION == SUBTRACTION)
                valueOne = this.valueOne - valueTwo;
            else if(CURRENT_ACTION == MULTIPLICATION)
                valueOne = this.valueOne * valueTwo;
            else if(CURRENT_ACTION == DIVISION)
                valueOne = this.valueOne / valueTwo;
            else if(CURRENT_ACTION == PERCENT)
                valueOne = this.valueOne % valueTwo;
        }
        else {
            try {
                valueOne = Double.parseDouble(mdisplay.getText().toString());
            }
            catch (Exception e){}
        }
    }

    private boolean isOperator(char c)
    {
        if(c=='+' || c=='-' || c=='x' || c=='/' || c=='%')
            return true;
        return false;
    }
}



activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:minHeight="25px"
    android:minWidth="25px"
    android:background="#2c2c2c"
    android:orientation="vertical">


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <TextView
            android:id="@+id/tv_op"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="bottom"
            android:paddingRight="10dp"
            android:layout_marginTop="10dp"
            android:paddingLeft="10dp"
            android:textAlignment="textEnd"
            android:textColor="#FFF"
            android:textSize="30sp"
            android:layout_weight="0.48" />
        <TextView
            android:id="@+id/tv_display"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="bottom"
            android:paddingRight="10dp"
            android:paddingLeft="10dp"
            android:paddingBottom="20dp"
            android:textAlignment="textEnd"
            android:textColor="#FFF"
            android:layout_below="@id/tv_op"
            android:textSize="60sp"
            android:layout_weight="0.48" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_gravity="bottom"
        android:background="#F44336"
        >
        <LinearLayout
            android:id="@+id/superviserlinearLayout1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:background="@null"
            android:minHeight="25px"
            android:minWidth="25px"
            android:orientation="horizontal"
            android:weightSum="4">

            <Button
                android:id="@+id/bt_ac"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@color/button_color_highlighted"
                android:padding="25dp"
                android:text="AC"
                android:textColor="@color/button_text_highlighted"
                android:textSize="24sp" />

            <Button
                android:id="@+id/bt_c"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@color/button_color_highlighted"
                android:padding="25dp"
                android:text="C"
                android:textColor="@color/button_text_highlighted"
                android:textSize="24sp" />

            <Button
                android:id="@+id/bt_device"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@color/button_color_highlighted"
                android:padding="25dp"
                android:text="/"
                android:textColor="@color/button_text_highlighted"
                android:textSize="24sp" />

            <Button
                android:id="@+id/bt_multi"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@color/button_color_highlighted"
                android:fontFamily="sans-serif"
                android:padding="25dp"
                android:text="x"
                android:textColor="@color/button_text_highlighted"
                android:textSize="24sp"
                android:typeface="monospace" />

        </LinearLayout>
        <LinearLayout
            android:id="@+id/superviserlinearLayout2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/superviserlinearLayout1"
            android:layout_centerHorizontal="true"
            android:minHeight="25px"
            android:minWidth="25px"
            android:orientation="horizontal"
            android:weightSum="4">

            <Button
                android:id="@+id/bt_7"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@color/button_color"
                android:padding="25dp"
                android:text="7"
                android:textColor="@color/button_text"
                android:textSize="24sp" />

            <Button
                android:id="@+id/bt_8"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@color/button_color"
                android:padding="25dp"
                android:text="8"
                android:textColor="@color/button_text"
                android:textSize="24sp" />

            <Button
                android:id="@+id/bt_9"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@color/button_color"
                android:padding="25dp"
                android:text="9"
                android:textColor="@color/button_text"
                android:textSize="24sp" />

            <Button
                android:id="@+id/bt_minus"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@color/button_color_highlighted"
                android:padding="25dp"
                android:text="-"
                android:textColor="@color/button_text_highlighted"
                android:textSize="24sp" />
        </LinearLayout>
        <LinearLayout
            android:id="@+id/superviserlinearLayout3"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/superviserlinearLayout2"
            android:layout_centerHorizontal="true"
            android:minHeight="25px"
            android:minWidth="25px"
            android:orientation="horizontal"
            android:weightSum="4">

            <Button
                android:id="@+id/bt_4"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@color/button_color"
                android:padding="25dp"
                android:text="4"
                android:textColor="@color/button_text"
                android:textSize="24sp" />

            <Button
                android:id="@+id/bt_5"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@color/button_color"
                android:padding="25dp"
                android:text="5"
                android:textColor="@color/button_text"
                android:textSize="24sp" />

            <Button
                android:id="@+id/bt_6"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@color/button_color"
                android:padding="25dp"
                android:text="6"
                android:textColor="@color/button_text"
                android:textSize="24sp" />

            <Button
                android:id="@+id/bt_plus"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@color/button_color_highlighted"
                android:padding="25dp"
                android:text="+"
                android:textColor="@color/button_text_highlighted"
                android:textSize="24sp" />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/superviserlinearLayout4"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/superviserlinearLayout3"
            android:layout_centerHorizontal="true"
            android:minHeight="25px"
            android:minWidth="25px"
            android:orientation="horizontal"

            android:weightSum="4">

            <Button
                android:id="@+id/bt_1"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@color/button_color"
                android:padding="25dp"
                android:text="1"
                android:textColor="@color/button_text"
                android:textSize="24sp" />

            <Button
                android:id="@+id/bt_2"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@color/button_color"
                android:padding="25dp"
                android:text="2"
                android:textColor="@color/button_text"
                android:textSize="24sp" />

            <Button
                android:id="@+id/bt_3"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@color/button_color"
                android:padding="25dp"
                android:text="3"
                android:textColor="@color/button_text"
                android:textSize="24sp" />

            <Button
                android:id="@+id/bt_percent"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@color/button_color_highlighted"
                android:padding="25dp"
                android:text="%"
                android:textColor="@color/button_text_highlighted"
                android:textSize="24sp" />
        </LinearLayout>
        <LinearLayout
            android:id="@+id/superviserlinearLayout5"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/superviserlinearLayout4"
            android:layout_centerHorizontal="true"
            android:minHeight="25px"
            android:minWidth="25px"
            android:orientation="horizontal"
            android:weightSum="4">

            <Button
                android:id="@+id/bt_sign"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@color/button_color"
                android:padding="25dp"
                android:text="-/+"
                android:textColor="@color/button_text_highlighted"
                android:textSize="24sp" />

            <Button
                android:id="@+id/bt_0"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@color/button_color"
                android:padding="25dp"
                android:text="0"
                android:textColor="@color/button_text"
                android:textSize="24sp" />

            <Button
                android:id="@+id/bt_dot"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@color/button_color"
                android:padding="25dp"
                android:text="."
                android:textColor="@color/button_text"
                android:textSize="24sp" />

            <Button
                android:id="@+id/bt_equal"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@color/button_color_highlighted"
                android:padding="25dp"
                android:text="="
                android:textColor="#FFF"
                android:textSize="24sp" />
        </LinearLayout>
    </LinearLayout>
    </LinearLayout>
</RelativeLayout>
Output:





Comments

Popular posts from this blog

Study of DB Miner Tool

Study of WEKA tool

Create calculated member using arithmetic operators and member property of dimension member