Build Native Calculator Application in Android Studio:
Download Android Studio from the link given blow according to your operating system Windows, Mac, Linux, Chrome OS etc.
Link: https://developer.android.com/studio
More downloads are available here.
Link: https://developer.android.com/studio/archive
After installation of Android Studio
Create File -> New Project->Empty Project->Native Calc
2 files are automatically activity_main.xml and MainActivity.java
XML File:activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.student.nativecalc.MainActivity">
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:ems="10"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true"
android:id="@+id/disp" />
<Button
android:text="0"
android:layout_width="65dp"
android:layout_height="55dp"
android:id="@+id/zero"
android:layout_alignBaseline="@+id/cancel"
android:layout_alignBottom="@+id/cancel"
android:layout_alignStart="@+id/two" />
<Button
android:text="/"
android:layout_width="65dp"
android:layout_height="55dp"
android:id="@+id/div"
android:layout_alignBottom="@+id/nine"
android:layout_alignParentEnd="true"
android:layout_alignTop="@+id/nine" />
<Button
android:text="6"
android:layout_width="65dp"
android:layout_height="55dp"
android:id="@+id/six"
android:layout_alignBaseline="@+id/four"
android:layout_alignBottom="@+id/four"
android:layout_alignStart="@+id/three" />
<Button
android:text="2"
android:layout_width="65dp"
android:layout_height="55dp"
android:id="@+id/two"
android:layout_marginEnd="35dp"
android:layout_toStartOf="@+id/three"
android:layout_alignTop="@+id/one"
android:layout_alignBottom="@+id/one" />
<Button
android:text="*"
android:layout_width="65dp"
android:layout_height="55dp"
android:id="@+id/mul"
android:layout_alignBaseline="@+id/one"
android:layout_alignBottom="@+id/one"
android:layout_alignParentEnd="true" />
<Button
android:text="3"
android:layout_width="65dp"
android:layout_height="55dp"
android:id="@+id/three"
android:layout_alignStart="@+id/nine"
android:layout_alignBottom="@+id/two" />
<Button
android:text="9"
android:layout_width="65dp"
android:layout_height="55dp"
android:id="@+id/nine"
android:layout_alignBaseline="@+id/seven"
android:layout_alignBottom="@+id/seven"
android:layout_toStartOf="@+id/div"
android:layout_marginEnd="22dp" />
<Button
android:text="4"
android:layout_width="65dp"
android:layout_height="55dp"
android:id="@+id/four"
android:layout_below="@+id/div"
android:layout_alignParentStart="true"
android:layout_marginTop="40dp" />
<Button
android:text="1"
android:layout_width="65dp"
android:layout_height="55dp"
android:id="@+id/one"
android:layout_below="@+id/sub"
android:layout_alignParentStart="true"
android:layout_marginTop="26dp" />
<Button
android:text="C"
android:layout_width="65dp"
android:layout_height="55dp"
android:id="@+id/cancel"
android:layout_marginBottom="35dp"
android:layout_alignParentBottom="true"
android:layout_alignParentStart="true" />
<Button
android:text="+"
android:layout_width="65dp"
android:layout_height="55dp"
android:id="@+id/add"
android:layout_alignBaseline="@+id/cancel"
android:layout_alignBottom="@+id/cancel"
android:layout_alignParentEnd="true" />
<Button
android:text="="
android:layout_width="65dp"
android:layout_height="55dp"
android:id="@+id/equal"
android:layout_alignBaseline="@+id/cancel"
android:layout_alignBottom="@+id/cancel"
android:layout_alignStart="@+id/three" />
<Button
android:text="-"
android:layout_width="65dp"
android:layout_height="55dp"
android:id="@+id/sub"
android:layout_alignBaseline="@+id/six"
android:layout_alignBottom="@+id/six"
android:layout_alignParentEnd="true" />
<Button
android:text="5"
android:layout_width="65dp"
android:layout_height="55dp"
android:id="@+id/five"
android:layout_alignBaseline="@+id/four"
android:layout_alignBottom="@+id/four"
android:layout_alignStart="@+id/two" />
<Button
android:text="7"
android:layout_width="65dp"
android:layout_height="55dp"
android:id="@+id/seven"
android:layout_marginTop="63dp"
android:layout_below="@+id/disp"
android:layout_alignParentStart="true" />
<Button
android:text="8"
android:layout_width="65dp"
android:layout_height="55dp"
android:id="@+id/eight"
android:layout_alignBaseline="@+id/seven"
android:layout_alignBottom="@+id/seven"
android:layout_alignStart="@+id/five" />
</RelativeLayout>
Backend Java File:MainActivity.java
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
Button one, two, three, four, five, six, seven, eight, nine, zero, add, sub, mul, div, cancel, equal;
EditText disp;
int op1;
int op2;
String optr;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
one = (Button) findViewById(R.id.one);
two = (Button) findViewById(R.id.two);
three = (Button) findViewById(R.id.three);
four = (Button) findViewById(R.id.four);
five = (Button) findViewById(R.id.five);
six = (Button) findViewById(R.id.six);
seven = (Button) findViewById(R.id.seven);
eight = (Button) findViewById(R.id.eight);
nine = (Button) findViewById(R.id.nine);
zero = (Button) findViewById(R.id.zero);
add = (Button) findViewById(R.id.add);
sub = (Button) findViewById(R.id.sub);
mul = (Button) findViewById(R.id.mul);
div = (Button) findViewById(R.id.div);
cancel = (Button) findViewById(R.id.cancel);
equal = (Button) findViewById(R.id.equal);
disp = (EditText) findViewById(R.id.disp);
try{
one.setOnClickListener(this);
two.setOnClickListener(this);
three.setOnClickListener(this);
four.setOnClickListener(this);
five.setOnClickListener(this);
six.setOnClickListener(this);
seven.setOnClickListener(this);
eight.setOnClickListener(this);
nine.setOnClickListener(this);
zero.setOnClickListener(this);
cancel.setOnClickListener(this);
add.setOnClickListener(this);
sub.setOnClickListener(this);
mul.setOnClickListener(this);
div.setOnClickListener(this);
equal.setOnClickListener(this);
}
catch(Exception e){
}
}
public void operation(){
if(optr.equals("+")){
op2 = Integer.parseInt(disp.getText().toString());
disp.setText("");
op1 = op1 + op2;
disp.setText("Result : " + Integer.toString(op1));
}
else if(optr.equals("-")){
op2 = Integer.parseInt(disp.getText().toString());
disp.setText("");
op1 = op1 - op2;
disp.setText("Result : " + Integer.toString(op1));
}
else if(optr.equals("*")){
op2 = Integer.parseInt(disp.getText().toString());
disp.setText("");
op1 = op1 * op2;
disp.setText("Result : " + Integer.toString(op1));
}
else if(optr.equals("/")){
op2 = Integer.parseInt(disp.getText().toString());
disp.setText("");
op1 = op1 / op2;
disp.setText("Result : " + Integer.toString(op1));
}
}
@Override
public void onClick(View v) {
Editable str = disp.getText();
switch(v.getId()){
case R.id.one:
if(op2 != 0){
op2 = 0;
disp.setText("");
}
str = str.append(one.getText());
disp.setText(str);
break;
case R.id.two:
if(op2 != 0){
op2 = 0;
disp.setText("");
}
str = str.append(two.getText());
disp.setText(str);
break;
case R.id.three:
if(op2 != 0){
op2 = 0;
disp.setText("");
}
str = str.append(three.getText());
disp.setText(str);
break;
case R.id.four:
if(op2 != 0){
op2 = 0;
disp.setText("");
}
str = str.append(four.getText());
disp.setText(str);
break;
case R.id.five:
if(op2 != 0){
op2 = 0;
disp.setText("");
}
str = str.append(five.getText());
disp.setText(str);
break;
case R.id.six:
if(op2 != 0){
op2 = 0;
disp.setText("");
}
str = str.append(six.getText());
disp.setText(str);
break;
case R.id.seven:
if(op2 != 0){
op2 = 0;
disp.setText("");
}
str = str.append(seven.getText());
disp.setText(str);
break;
case R.id.eight:
if(op2 != 0){
op2 = 0;
disp.setText("");
}
str = str.append(eight.getText());
disp.setText(str);
break;
case R.id.nine:
if(op2 != 0){
op2 = 0;
disp.setText("");
}
str = str.append(nine.getText());
disp.setText(str);
break;
case R.id.zero:
if(op2 != 0){
op2 = 0;
disp.setText("");
}
str = str.append(zero.getText());
disp.setText(str);
break;
case R.id.cancel:
op1 = 0;
op2 = 0;
disp.setText("");
disp.setHint("Perform Operation :)");
break;
case R.id.add:
optr = "+";
if(op1 == 0){
op1 = Integer.parseInt(disp.getText().toString());
disp.setText("");
}
else if(op2 != 0){
op2 = 0;
disp.setText("");
}
else{
op2 = Integer.parseInt(disp.getText().toString());
disp.setText("");
op1 = op1 + op2;
disp.setText("Result : " + Integer.toString(op1));
}
break;
case R.id.sub:
optr = "-";
if(op1 == 0){
op1 = Integer.parseInt(disp.getText().toString());
disp.setText("");
}
else if(op2 != 0){
op2 = 0;
disp.setText("");
}
else{
op2 = Integer.parseInt(disp.getText().toString());
disp.setText("");
op1 = op1 - op2;
disp.setText("Result : " + Integer.toString(op1));
}
break;
case R.id.mul:
optr = "*";
if(op1 == 0){
op1 = Integer.parseInt(disp.getText().toString());
disp.setText("");
}
else if(op2 != 0){
op2 = 0;
disp.setText("");
}
else{
op2 = Integer.parseInt(disp.getText().toString());
disp.setText("");
op1 = op1 * op2;
disp.setText("Result : " + Integer.toString(op1));
}
break;
case R.id.div:
optr = "/";
if(op1 == 0){
op1 = Integer.parseInt(disp.getText().toString());
disp.setText("");
}
else if(op2 != 0){
op2 = 0;
disp.setText("");
}
else{
op2 = Integer.parseInt(disp.getText().toString());
disp.setText("");
op1 = op1 / op2;
disp.setText("Result : " + Integer.toString(op1));
}
break;
case R.id.equal:
operation();
break;
}
}
}