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.