Overview
In this tutorial, we show you how to create a Calculator Android Application. This is a simple Calculator with limited functionality.Watch Tutorial
Creating the project
Open the Android Studio, then click “Start a new Android Studio project”.
Enter the info below:
Application Name: Calculator Example
Company domain: jackrutorial.com
Project location: C:/android
then click "Next".
Select the form factors and minimum SDK. In this tutorial, We selected the minimum SDK "API 15: Android 4.0.3(IceCreamSandwich)", click "Next".
Select the Empty activity and click "Next".
Leave the activity name “MainActivity”, Click Finish.
Designing the Calculator layout
Open the activity_main.xml layout file, we will create our layout using Button and TextView controls. The layout code snippet is shown below.<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.jackrutorial.calculatorexample.MainActivity">
<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<TextView
android:id="@+id/txtResult"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_span="4"
android:layout_gravity="right"
/>
</TableRow>
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<EditText
android:id="@+id/edtInput"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_span="4"
android:layout_gravity="right"
android:inputType="number"
/>
</TableRow>
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<Button
android:id="@+id/btnCE"
android:text="CE"
/>
<Button
android:id="@+id/btnC"
android:text="C"
/>
<Button
android:id="@+id/btnDelete"
android:text="Delete"
android:layout_span="2"
/>
</TableRow>
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<Button
android:id="@+id/btnNumber7"
android:text="7"
/>
<Button
android:id="@+id/btnNumber8"
android:text="8"
/>
<Button
android:id="@+id/btnNumber9"
android:text="9"
/>
<Button
android:id="@+id/btnNumberAdd"
android:text="+"
/>
</TableRow>
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<Button
android:id="@+id/btnNumber4"
android:text="4"
/>
<Button
android:id="@+id/btnNumber5"
android:text="5"
/>
<Button
android:id="@+id/btnNumber6"
android:text="6"
/>
<Button
android:id="@+id/btnNumberSub"
android:text="-"
/>
</TableRow>
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<Button
android:id="@+id/btnNumber1"
android:text="1"
/>
<Button
android:id="@+id/btnNumber2"
android:text="2"
/>
<Button
android:id="@+id/btnNumber3"
android:text="3"
/>
<Button
android:id="@+id/btnNumberMul"
android:text="*"
/>
</TableRow>
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<Button
android:id="@+id/btnNumber0"
android:text="0"
/>
<Button
android:id="@+id/btnDot"
android:text="."
/>
<Button
android:id="@+id/btnResult"
android:text="="
/>
<Button
android:id="@+id/btnNumberDiv"
android:text="/"
/>
</TableRow>
</TableLayout>
</android.support.constraint.ConstraintLayout>
Main Activity
Change MainActivity activity code to the following.package com.jackrutorial.calculatorexample;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
Button btnNumber0;
Button btnNumber1;
Button btnNumber2;
Button btnNumber3;
Button btnNumber4;
Button btnNumber5;
Button btnNumber6;
Button btnNumber7;
Button btnNumber8;
Button btnNumber9;
TextView txtResult;
EditText edtInput;
Button btnCE;
Button btnC;
Button btnDelete;
Button btnAdd;
Button btnSub;
Button btnMul;
Button btnDiv;
Button btnDot;
Button btnResult;
double val1=Double.NaN;
double val2;
String ACTION;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnNumber0 = (Button) findViewById(R.id.btnNumber0);
btnNumber1 = (Button) findViewById(R.id.btnNumber1);
btnNumber2 = (Button) findViewById(R.id.btnNumber2);
btnNumber3 = (Button) findViewById(R.id.btnNumber3);
btnNumber4 = (Button) findViewById(R.id.btnNumber4);
btnNumber5 = (Button) findViewById(R.id.btnNumber5);
btnNumber6 = (Button) findViewById(R.id.btnNumber6);
btnNumber7 = (Button) findViewById(R.id.btnNumber7);
btnNumber8 = (Button) findViewById(R.id.btnNumber8);
btnNumber9 = (Button) findViewById(R.id.btnNumber9);
txtResult = (TextView) findViewById(R.id.txtResult);
edtInput = (EditText) findViewById(R.id.edtInput);
btnCE = (Button) findViewById(R.id.btnCE);
btnC = (Button) findViewById(R.id.btnC);
btnDelete = (Button) findViewById(R.id.btnDelete);
btnAdd = (Button) findViewById(R.id.btnNumberAdd);
btnSub = (Button) findViewById(R.id.btnNumberSub);
btnMul = (Button) findViewById(R.id.btnNumberMul);
btnDiv = (Button) findViewById(R.id.btnNumberDiv);
btnDot = (Button) findViewById(R.id.btnDot);
btnResult = (Button) findViewById(R.id.btnResult);
btnCE.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
edtInput.setText(null);
}
});
btnC.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
val1 = Double.NaN;
txtResult.setText(null);
edtInput.setText(null);
}
});
btnDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String number = edtInput.getText().toString();
if(number != null && number.length() > 0){
number = number.substring(0, number.length() - 1);
}
edtInput.setText(number);
edtInput.setSelection(edtInput.getText().length());
}
});
btnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ACTION = "+";
if(!Double.isNaN(val1)){
val2 = Double.parseDouble(edtInput.getText().toString());
val1 = val1 + val2;
} else {
val1 = Double.parseDouble(edtInput.getText().toString());
}
txtResult.setText(val1 + " + ");
edtInput.setText(null);
}
});
btnSub.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ACTION = "-";
if(!Double.isNaN(val1)){
val2 = Double.parseDouble(edtInput.getText().toString());
val1 = val1 - val2;
} else {
val1 = Double.parseDouble(edtInput.getText().toString());
}
txtResult.setText(val1 + " - ");
edtInput.setText(null);
}
});
btnMul.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ACTION = "*";
if(!Double.isNaN(val1)){
val2 = Double.parseDouble(edtInput.getText().toString());
val1 = val1 * val2;
} else {
val1 = Double.parseDouble(edtInput.getText().toString());
}
txtResult.setText(val1 + " * ");
edtInput.setText(null);
}
});
btnDiv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ACTION = "/";
if(!Double.isNaN(val1)){
val2 = Double.parseDouble(edtInput.getText().toString());
val1 = val1/val2;
} else {
val1 = Double.parseDouble(edtInput.getText().toString());
}
txtResult.setText(val1 + " / ");
edtInput.setText(null);
}
});
btnResult.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(ACTION != null && ACTION.equals("+")){
double result = val1 + Double.parseDouble(edtInput.getText().toString());
txtResult.setText(null);
edtInput.setText(String.valueOf(result));
} else if(ACTION != null && ACTION.equals("-")){
double result = val1 - Double.parseDouble(edtInput.getText().toString());
txtResult.setText(null);
edtInput.setText(String.valueOf(result));
} else if(ACTION != null && ACTION.equals("*")){
double result = val1 * Double.parseDouble(edtInput.getText().toString());
txtResult.setText(null);
edtInput.setText(String.valueOf(result));
} else if(ACTION != null && ACTION.equals("/")){
double result = val1 / Double.parseDouble(edtInput.getText().toString());
txtResult.setText(null);
edtInput.setText(String.valueOf(result));
}
ACTION = null;
val1 = Double.NaN;
edtInput.setSelection(edtInput.getText().length());
}
});
btnNumber0.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
edtInput.setText(edtInput.getText() + "0");
edtInput.setSelection(edtInput.getText().length());
}
});
btnNumber1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
edtInput.setText(edtInput.getText() + "1");
edtInput.setSelection(edtInput.getText().length());
}
});
btnNumber2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
edtInput.setText(edtInput.getText() + "2");
edtInput.setSelection(edtInput.getText().length());
}
});
btnNumber3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
edtInput.setText(edtInput.getText() + "3");
edtInput.setSelection(edtInput.getText().length());
}
});
btnNumber4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
edtInput.setText(edtInput.getText() + "4");
edtInput.setSelection(edtInput.getText().length());
}
});
btnNumber5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
edtInput.setText(edtInput.getText() + "5");
edtInput.setSelection(edtInput.getText().length());
}
});
btnNumber6.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
edtInput.setText(edtInput.getText() + "6");
edtInput.setSelection(edtInput.getText().length());
}
});
btnNumber7.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
edtInput.setText(edtInput.getText() + "7");
edtInput.setSelection(edtInput.getText().length());
}
});
btnNumber8.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
edtInput.setText(edtInput.getText() + "8");
edtInput.setSelection(edtInput.getText().length());
}
});
btnNumber9.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
edtInput.setText(edtInput.getText() + "9");
edtInput.setSelection(edtInput.getText().length());
}
});
btnDot.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
edtInput.setText(edtInput.getText() + ".");
edtInput.setSelection(edtInput.getText().length());
}
});
}
}
Finally
You can run this app from an Android Studio project. Or you can run this app that's been installed on the emulator as you would run any app on a device.To start the emulator and run this app in your project
- Open Android Studio project and click Run.
- In the Select Deployment Target dialog, select an existing emulator definition, and then click OK.
- If you don’t see a definition you want to use, click Create New Virtual Device to launch the AVD Manager. After you define a new AVD, in the Select Deployment Target dialog, click OK.
- If you want to use this emulator definition as the default for your project, select Use same selection for future launches.






