Lab-4
AIM:
Develop a native calculator using Android Studio having controls like Button, TextView, EditText for
designing a calculator having basic functionality like Addition, Subtraction, Multiplication, and
Division.
CODE:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="[Link]
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textViewInput"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_margin="16dp"
android:textSize="24sp"
android:gravity="end"
android:textColor="@android:color/black"
android:text="0"/>
<TextView
android:id="@+id/textViewResult"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/textViewInput"
android:layout_margin="16dp"
android:textSize="30sp"
android:gravity="end"
android:textColor="@android:color/black"
android:text="0"/>
<GridLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/textViewResult"
android:layout_marginTop="16dp"
android:columnCount="4">
<!-- Row 1 -->
<Button
android:layout_width="0dp"
android:id="@+id/button7"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:text="7"
android:onClick="onDigitClick" />
<Button
android:layout_width="0dp"
android:id="@+id/button8"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:text="8"
android:onClick="onDigitClick" />
<Button
android:layout_width="0dp"
android:id="@+id/button9"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:text="9"
android:onClick="onDigitClick" />
<Button
android:layout_width="0dp"
android:id="@+id/division"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:text="/"
android:onClick="onOperatorClick" />
<!-- Row 2 -->
<Button
android:layout_width="0dp"
android:id="@+id/button4"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:text="4"
android:onClick="onDigitClick" />
<Button
android:layout_width="0dp"
android:id="@+id/button5"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:text="5"
android:onClick="onDigitClick" />
<Button
android:layout_width="0dp"
android:id="@+id/button6"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:text="6"
android:onClick="onDigitClick" />
<Button
android:layout_width="0dp"
android:id="@+id/multiplication"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:text="*"
android:onClick="onOperatorClick" />
<!-- Row 3 -->
<Button
android:layout_width="0dp"
android:id="@+id/button1"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:text="1"
android:onClick="onDigitClick" />
<Button
android:layout_width="0dp"
android:id="@+id/button2"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:text="2"
android:onClick="onDigitClick" />
<Button
android:layout_width="0dp"
android:id="@+id/button3"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:text="3"
android:onClick="onDigitClick" />
<Button
android:layout_width="0dp"
android:id="@+id/subtraction"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:text="-"
android:onClick="onOperatorClick" />
<!-- Row 4 -->
<Button
android:layout_width="0dp"
android:id="@+id/button0"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:text="0"
android:onClick="onDigitClick" />
<Button
android:layout_width="0dp"
android:id="@+id/buttondot"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:text="."
android:onClick="onDecimalClick" />
<Button
android:layout_width="0dp"
android:id="@+id/addition"
android:layout_height="wrap_content"
android:layout_columnSpan="2"
android:layout_columnWeight="2"
android:text="+"
android:onClick="onOperatorClick" />
<Button
android:layout_width="0dp"
android:id="@+id/equal"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:text="="
android:onClick="onEqualClick" />
<!-- Clear and Delete buttons -->
<Button
android:layout_width="0dp"
android:id="@+id/clear"
android:layout_height="wrap_content"
android:layout_columnSpan="2"
android:layout_columnWeight="2"
android:text="Clear"
android:onClick="onClearClick" />
</GridLayout>
</RelativeLayout>
[Link]
package [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
public class MainActivity extends AppCompatActivity {
private TextView resultTextView;
private TextView inputTextView; // New TextView for input
private Button addition, subtraction, multiplication, division, equal, clear;
private Button[] numberButtons = new Button[10];
private double valueOne = [Link], valueTwo;
private final char ADDITION = '+', SUBTRACTION = '-', MULTIPLICATION = '*', DIVISION
= '/';
private char ACTION;
@Override
protected void onCreate(Bundle savedInstanceState) {
[Link](savedInstanceState);
setContentView([Link].activity_main);
setupUIViews();
for (int i = 0; i < 10; i++) {
int finalI = i;
numberButtons[i].setOnClickListener(new [Link]() {
@Override
public void onClick(View v) {
// Append input value to both inputTextView and resultTextView
[Link]([Link](finalI));
[Link]([Link](finalI));
}
});
}
[Link](new [Link]() {
@Override
public void onClick(View v) {
compute();
ACTION = ADDITION;
// Update inputTextView for the action
[Link](" + ");
[Link](null);
}
});
[Link](new [Link]() {
@Override
public void onClick(View v) {
compute();
ACTION = SUBTRACTION;
// Update inputTextView for the action
[Link](" - ");
[Link](null);
}
});
[Link](new [Link]() {
@Override
public void onClick(View v) {
compute();
ACTION = MULTIPLICATION;
// Update inputTextView for the action
[Link](" * ");
[Link](null);
}
});
[Link](new [Link]() {
@Override
public void onClick(View v) {
compute();
ACTION = DIVISION;
// Update inputTextView for the action
[Link](" / ");
[Link](null);
}
});
[Link](new [Link]() {
@Override
public void onClick(View v) {
compute();
ACTION = '0';
}
});
[Link](new [Link]() {
@Override
public void onClick(View v) {
valueOne = [Link];
valueTwo = [Link];
[Link](null);
[Link](null);
}
});
}
private void setupUIViews() {
resultTextView = findViewById([Link]);
inputTextView = findViewById([Link]);
addition = findViewById([Link]);
subtraction = findViewById([Link]);
multiplication = findViewById([Link]);
division = findViewById([Link]);
equal = findViewById([Link]);
clear = findViewById([Link]);
// Initialize number buttons
for (int i = 0; i < 10; i++) {
String buttonID = "button" + i;
int resID = getResources().getIdentifier(buttonID, "id", getPackageName());
numberButtons[i] = findViewById(resID);
}
}
private void compute() {
if () {
valueTwo = [Link]([Link]().toString());
switch (ACTION) {
case ADDITION:
valueOne = valueOne + valueTwo;
break;
case SUBTRACTION:
valueOne = valueOne - valueTwo;
break;
case MULTIPLICATION:
valueOne = valueOne * valueTwo;
break;
case DIVISION:
valueOne = valueOne / valueTwo;
break;
}
} else {
try {
valueOne = [Link]([Link]().toString());
} catch (Exception e) {
}
}
[Link]([Link](valueOne));
}
}
Output:
Fig 4.1 : Calculator