You are on page 1of 14

Program Code

activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:background="@color/black"
android:orientation="vertical"
tools:context=".MainActivity">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:textSize="40sp"
android:textColor="@color/white"
android:padding="10dp"
android:layout_gravity="end"
android:id="@+id/input"/>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:textSize="60sp"
android:textColor="@color/white"
android:padding="10dp"
android:layout_gravity="end"
android:id="@+id/output"/>

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:background="@color/black"
android:layout_marginTop="130dp"
android:layout_gravity="bottom">

<include
android:layout_width="match_parent"
android:layout_height="match_parent"
layout="@layout/buttons_layout"/>

</RelativeLayout>
</LinearLayout>
colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="black">#FF000000</color>
<color name="white">#FFFFFFFF</color>
<color name="purple_200">#FFBB86FC</color>
<color name="purple_500">#FF6200EE</color>
<color name="purple_700">#FF3700B3</color>
<color name="teal_700">#FF018786</color>
<color name="teal_200">#FF03DAC5</color>
<color name="Lavender">#ACB4F6</color>
</resources>

themes.xml
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Base.Theme.Calculator" parent="Theme.Material3.DayNight.NoActionBar">
<!-- Customize your light theme here. -->
<item name="colorPrimary">@color/Lavender</item>
<item name="colorPrimaryVariant">@color/Lavender</item>
<item name="colorOnPrimary">@color/white</item>
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>

<item name="android:statusBarColor">?attr/colorPrimaryVariant</item>
</style>

<style name="Theme.Calculator" parent="Base.Theme.Calculator" />


</resources>

buttons_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto">

<GridLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:rowCount="5"
android:columnCount="4">

<com.google.android.material.button.MaterialButton
android:id="@+id/off"
android:layout_width="wrap_content"
android:layout_height="100dp"
android:text="OFF"
android:textColor="#000000"
android:backgroundTint="#BFBDBD"
android:textSize="33sp"
android:layout_margin="3dp"
android:layout_row="0"
android:layout_column="0"
android:layout_columnWeight="1"/>
<com.google.android.material.button.MaterialButton
android:id="@+id/clear"
android:layout_width="wrap_content"
android:layout_height="100dp"
android:text="C"
android:textColor="#000000"
android:backgroundTint="#BFBDBD"
android:textSize="35sp"
android:layout_margin="3dp"
android:layout_row="0"
android:layout_column="1"
android:layout_columnWeight="1"/>
<com.google.android.material.button.MaterialButton
android:id="@+id/percent"
android:layout_width="wrap_content"
android:layout_height="100dp"
android:text="%"
android:textColor="#000000"
android:backgroundTint="#BFBDBD"
android:textSize="40sp"
android:layout_margin="3dp"
android:layout_row="0"
android:layout_column="2"
android:layout_columnWeight="1"/>
<com.google.android.material.button.MaterialButton
android:id="@+id/division"
android:layout_width="wrap_content"
android:layout_height="100dp"
android:text="/"
android:textColor="#FFFFFF"
android:backgroundTint="#FF9800"
android:textSize="40sp"
android:layout_margin="3dp"
android:layout_row="0"
android:layout_column="3"
android:layout_columnWeight="1"/>
<com.google.android.material.button.MaterialButton
android:id="@+id/b7"
android:layout_width="wrap_content"
android:layout_height="100dp"
android:text="7"
android:textColor="@color/white"
android:backgroundTint="#373737"
android:textSize="30sp"
android:layout_margin="3dp"
android:layout_row="1"
android:layout_column="0"
android:layout_columnWeight="1"/>
<com.google.android.material.button.MaterialButton
android:id="@+id/b8"
android:layout_width="wrap_content"
android:layout_height="100dp"
android:text="8"
android:textColor="@color/white"
android:backgroundTint="#373737"
android:textSize="30sp"
android:layout_margin="3dp"
android:layout_row="1"
android:layout_column="1"
android:layout_columnWeight="1"/>
<com.google.android.material.button.MaterialButton
android:id="@+id/b9"
android:layout_width="wrap_content"
android:layout_height="100dp"
android:text="9"
android:textColor="@color/white"
android:backgroundTint="#373737"
android:textSize="30sp"
android:layout_margin="3dp"
android:layout_row="1"
android:layout_column="2"
android:layout_columnWeight="1"/>
<com.google.android.material.button.MaterialButton
android:id="@+id/multiply"
android:layout_width="wrap_content"
android:layout_height="100dp"
android:text="x"
android:textColor="#FFFFFF"
android:backgroundTint="#FF9800"
android:textSize="40sp"
android:layout_margin="3dp"
android:layout_row="1"
android:layout_column="3"
android:layout_columnWeight="1"/>
<com.google.android.material.button.MaterialButton
android:id="@+id/b4"
android:layout_width="wrap_content"
android:layout_height="100dp"
android:text="4"
android:textColor="@color/white"
android:backgroundTint="#373737"
android:textSize="30sp"
android:layout_margin="3dp"
android:layout_row="2"
android:layout_column="0"
android:layout_columnWeight="1"/>
<com.google.android.material.button.MaterialButton
android:id="@+id/b5"
android:layout_width="wrap_content"
android:layout_height="100dp"
android:text="5"
android:textColor="@color/white"
android:backgroundTint="#373737"
android:textSize="30sp"
android:layout_margin="3dp"
android:layout_row="2"
android:layout_column="1"
android:layout_columnWeight="1"/>
<com.google.android.material.button.MaterialButton
android:id="@+id/b6"
android:layout_width="wrap_content"
android:layout_height="100dp"
android:text="6"
android:textColor="@color/white"
android:backgroundTint="#373737"
android:textSize="30sp"
android:layout_margin="3dp"
android:layout_row="2"
android:layout_column="2"
android:layout_columnWeight="1"/>
<com.google.android.material.button.MaterialButton
android:id="@+id/subtract"
android:layout_width="wrap_content"
android:layout_height="100dp"
android:text="-"
android:textColor="#FFFFFF"
android:backgroundTint="#FF9800"
android:textSize="40sp"
android:layout_margin="3dp"
android:layout_row="2"
android:layout_column="3"
android:layout_columnWeight="1"/>
<com.google.android.material.button.MaterialButton
android:id="@+id/b1"
android:layout_width="wrap_content"
android:layout_height="100dp"
android:text="1"
android:textColor="@color/white"
android:backgroundTint="#373737"
android:textSize="30sp"
android:layout_margin="3dp"
android:layout_row="3"
android:layout_column="0"
android:layout_columnWeight="1"/>
<com.google.android.material.button.MaterialButton
android:id="@+id/b2"
android:layout_width="wrap_content"
android:layout_height="100dp"
android:text="2"
android:textColor="@color/white"
android:backgroundTint="#373737"
android:textSize="30sp"
android:layout_margin="3dp"
android:layout_row="3"
android:layout_column="1"
android:layout_columnWeight="1"/>
<com.google.android.material.button.MaterialButton
android:id="@+id/b3"
android:layout_width="wrap_content"
android:layout_height="100dp"
android:text="3"
android:textColor="@color/white"
android:backgroundTint="#373737"
android:textSize="30sp"
android:layout_margin="3dp"
android:layout_row="3"
android:layout_column="2"
android:layout_columnWeight="1"/>
<com.google.android.material.button.MaterialButton
android:id="@+id/add"
android:layout_width="wrap_content"
android:layout_height="100dp"
android:text="+"
android:textColor="#FFFFFF"
android:backgroundTint="#FF9800"
android:textSize="35sp"
android:layout_margin="3dp"
android:layout_row="3"
android:layout_column="3"
android:layout_columnWeight="1"/>
<com.google.android.material.button.MaterialButton
android:id="@+id/b0"
android:layout_width="wrap_content"
android:layout_height="100dp"
android:text="0"
android:textColor="@color/white"
android:backgroundTint="#373737"
android:textSize="30sp"
android:layout_margin="3dp"
android:layout_row="4"
android:layout_column="0"
android:layout_columnSpan="2"
android:layout_columnWeight="1"/>
<com.google.android.material.button.MaterialButton
android:id="@+id/dot"
android:layout_width="wrap_content"
android:layout_height="100dp"
android:text="."
android:textColor="@color/white"
android:backgroundTint="#373737"
android:textSize="30sp"
android:layout_margin="3dp"
android:layout_row="4"
android:layout_column="2"
android:layout_columnWeight="1"/>
<com.google.android.material.button.MaterialButton
android:id="@+id/equal"
android:layout_width="wrap_content"
android:layout_height="100dp"
android:text="="
android:textColor="@color/white"
android:backgroundTint="#FF9800"
android:textSize="30sp"
android:layout_margin="3dp"
android:layout_row="4"
android:layout_column="3"
android:layout_columnWeight="1"/>

</GridLayout>

</RelativeLayout>
MainActivity.java
package com.example.calculator;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

import com.google.android.material.button.MaterialButton;

import java.text.DecimalFormat;

public class MainActivity extends AppCompatActivity


{
public static final char Addition='+';
public static final char Subtraction='-';
public static final char Multiplication='*';
public static final char Division='/';
public static final char Percent='%';

private char currentSymbol;

private double firstValue=Double.NaN;


private double secondValue;
private TextView inputDisplay,outputDisplay;
private DecimalFormat decimalFormat;
private MaterialButton b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,dot,add,sub,mul,percent,div,clear,off,equal;

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

decimalFormat=new DecimalFormat("#.###########");

inputDisplay=findViewById(R.id.input);
outputDisplay=findViewById(R.id.output);

b0=findViewById(R.id.b0);
b1=findViewById(R.id.b1);
b2=findViewById(R.id.b2);
b3=findViewById(R.id.b3);
b4=findViewById(R.id.b4);
b5=findViewById(R.id.b5);
b6=findViewById(R.id.b6);
b7=findViewById(R.id.b7);
b8=findViewById(R.id.b8);
b9=findViewById(R.id.b9);

add=findViewById(R.id.add);
sub=findViewById(R.id.subtract);
mul=findViewById(R.id.multiply);
div=findViewById(R.id.division);
dot=findViewById(R.id.dot);
clear=findViewById(R.id.clear);
off=findViewById(R.id.off);
equal=findViewById(R.id.equal);
percent=findViewById(R.id.percent);

b0.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
inputDisplay.setText(inputDisplay.getText()+"0");
}
});
b1.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
inputDisplay.setText(inputDisplay.getText()+"1");
}
});
b2.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
inputDisplay.setText(inputDisplay.getText()+"2");
}
});
b3.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
inputDisplay.setText(inputDisplay.getText()+"3");
}
});
b4.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
inputDisplay.setText(inputDisplay.getText()+"4");
}
});
b5.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
inputDisplay.setText(inputDisplay.getText()+"5");
}
});
b6.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
inputDisplay.setText(inputDisplay.getText()+"6");
}
});
b7.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
inputDisplay.setText(inputDisplay.getText()+"7");
}
});
b8.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
inputDisplay.setText(inputDisplay.getText()+"8");
}
});
b9.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
inputDisplay.setText(inputDisplay.getText()+"9");
}
});

add.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
allCalculation();
currentSymbol=Addition;
outputDisplay.setText(decimalFormat.format(firstValue)+"+");
inputDisplay.setText(null);
}
});
sub.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
allCalculation();
currentSymbol=Subtraction;
outputDisplay.setText(decimalFormat.format(firstValue)+"-");
inputDisplay.setText(null);
}
});
mul.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
allCalculation();
currentSymbol=Multiplication;
outputDisplay.setText(decimalFormat.format(firstValue)+"x");
inputDisplay.setText(null);
}
});
div.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
allCalculation();
currentSymbol=Division;
outputDisplay.setText(decimalFormat.format(firstValue)+"/");
inputDisplay.setText(null);
}
});
percent.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
allCalculation();
currentSymbol=Percent;
outputDisplay.setText(decimalFormat.format(firstValue)+"%");
inputDisplay.setText(null);
}
});

dot.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
inputDisplay.setText(inputDisplay.getText()+".");
}
});
clear.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
if(inputDisplay.getText().length()>0)
{
CharSequence currentText=inputDisplay.getText();
inputDisplay.setText(currentText.subSequence(0,currentText.length()-1));
}
else
{
firstValue=Double.NaN;
secondValue=Double.NaN;
inputDisplay.setText("");
outputDisplay.setText("");
}
}
});

off.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
finish();
}
});
equal.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
allCalculation();
outputDisplay.setText(decimalFormat.format(firstValue));
firstValue=Double.NaN;
currentSymbol='0';
}
});

private void allCalculation()


{
if(!Double.isNaN(firstValue))
{
secondValue=Double.parseDouble(inputDisplay.getText().toString());
inputDisplay.setText(null);

if(currentSymbol==Addition)
firstValue=this.firstValue+secondValue;
else if (currentSymbol==Subtraction)
firstValue=this.firstValue-secondValue;
else if (currentSymbol==Multiplication)
firstValue=this.firstValue*secondValue;
else if (currentSymbol==Division)
firstValue=this.firstValue/secondValue;
else if (currentSymbol==Percent)
firstValue=this.firstValue%secondValue;
}
else
{
try
{
firstValue=Double.parseDouble(inputDisplay.getText().toString());
}
catch (Exception e)
{

}
}
}
}
Output

You might also like