Although we rarely use calculators in our daily lives now, this is the first time I try to make a calculator on Android Studio
Programming steps:
(1) Declare the editing file box EditText, button Button and other components in the layout file.
(2) Get the component instance in MainActivity.
(3) Use the switch function to determine the input content and perform corresponding operations. Get the text content through getText() and display it with setText().
Program code design:
Layout implementation: Set in acti_main.xml. Use LinearLayout and GridLayout to set up the interface. Set up a grid layout with 4 rows and 4 columns in the design area. Each row is divided into 16 equal buttons, representing the numbers 0-9, the decimal point, the operators addition, subtraction, multiplication and division, and the equal sign.
The final rendering is as follows:
xml file:
<?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:layout_marginLeft="30dp"
android:layout_marginTop="16dp"
android:layout_marginRight="30dp"
android:layout_marginBottom="20dp"
android:orientation="vertical"
tools:context=".MainActivity">
<TextView
android:id="@+id/Answer"
android:layout_width="match_parent"
android:layout_height="189dp"
android:layout_weight="0.33"
android:hint="Result"
android:textSize="34sp" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button
android:id="@+id/btn10"
android:layout_width="wrap_content"
android:layout_height="76dp"
android:background="@color/purple_200"
android:text="C"
android:textColor="#F30C4D"
android:textSize="20sp" />
<Button
android:id="@+id/btn11"
android:layout_width="wrap_content"
android:layout_height="76dp"
android:background="@color/purple_200"
android:text="%"
android:textColor="#FF5722"
android:textSize="20sp" />
<Button
android:id="@+id/btn12"
android:layout_width="175dp"
android:layout_height="76dp"
android:background="@color/purple_200"
android:text="Del"
android:textColor="#F30C4D"
android:textSize="20sp" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="76dp"
android:background="@color/purple_200"
android:text="1"
android:textSize="26dp" />
<Button
android:id="@+id/btn2"
android:layout_width="wrap_content"
android:layout_height="76dp"
android:background="@color/teal_200"
android:text="2"
android:textSize="26dp" />
<Button
android:id="@+id/btn3"
android:layout_width="wrap_content"
android:layout_height="76dp"
android:background="@color/purple_200"
android:text="3"
android:textSize="26dp" />
<Button
android:id="@+id/btnadd"
android:layout_width="wrap_content"
android:layout_height="77dp"
android:background="#00BCD4"
android:text="+"
android:textColor="#FFEB3B"
android:textSize="26dp" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button
android:id="@+id/btn4"
android:layout_width="wrap_content"
android:layout_height="76dp"
android:background="@color/purple_200"
android:text="4"
android:textSize="26dp" />
<Button
android:id="@+id/btn5"
android:layout_width="wrap_content"
android:layout_height="76dp"
android:background="@color/purple_200"
android:text="5"
android:textSize="26dp" />
<Button
android:id="@+id/btn6"
android:layout_width="wrap_content"
android:layout_height="76dp"
android:background="@color/purple_200"
android:text="6"
android:textSize="26dp" />
<Button
android:id="@+id/btnsub"
android:layout_width="wrap_content"
android:layout_height="76dp"
android:background="@color/purple_200"
android:text="-"
android:textColor="#FFEB3B"
android:textSize="26dp" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button
android:id="@+id/btn7"
android:layout_width="wrap_content"
android:layout_height="76dp"
android:background="@color/purple_200"
android:text="7"
android:textSize="26dp" />
<Button
android:id="@+id/btn8"
android:layout_width="wrap_content"
android:layout_height="76dp"
android:background="@color/purple_200"
android:text="8"
android:textSize="26dp" />
<Button
android:id="@+id/btn9"
android:layout_width="wrap_content"
android:layout_height="76dp"
android:background="@color/purple_200"
android:text="9"
android:textSize="26dp" />
<Button
android:id="@+id/btnmul"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="@color/purple_200"
android:text="×"
android:textColor="#FFEB3B"
android:textSize="26dp" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button
android:id="@+id/btn0"
android:layout_width="wrap_content"
android:layout_height="76dp"
android:background="@color/purple_200"
android:text="0"
android:textColor="#E91E63"
android:textSize="26dp" />
<Button
android:id="@+id/btndot"
android:layout_width="wrap_content"
android:layout_height="76dp"
android:background="@color/purple_200"
android:text="."
android:textSize="26dp" />
<Button
android:id="@+id/btnequel"
android:layout_width="wrap_content"
android:layout_height="76dp"
android:background="@color/purple_200"
android:text="="
android:textColor="#FF5722"
android:textSize="26dp" />
<Button
android:id="@+id/btndiv"
android:layout_width="wrap_content"
android:layout_height="76dp"
android:background="@color/purple_200"
android:text="÷"
android:textColor="#FFEB3B"
android:textSize="26dp" />
</LinearLayout>
</LinearLayout>
java file:
package com.example.mycalculater;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
Button b1,b2,b3,b4,b5,b6,b7,b8,b9,b0,badd,bsub,bmul,bdiv,bdot,bequal,b10,b12;
TextView ans;
double var1,var2;
boolean add,sub,mul,div,n10;
boolean sq = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b1= (Button) findViewById(R.id.btn1);
b2= (Button) findViewById(R.id.btn2);
b3= (Button) findViewById(R.id.btn3);
b4= (Button) findViewById(R.id.btn4);
b5= (Button) findViewById(R.id.btn5);
b6= (Button) findViewById(R.id.btn6);
b7= (Button) findViewById(R.id.btn7);
b8= (Button) findViewById(R.id.btn8);
b9= (Button) findViewById(R.id.btn9);
b0= (Button) findViewById(R.id.btn0);
badd= (Button) findViewById(R.id.btnadd);
bsub= (Button) findViewById(R.id.btnsub);
bmul= (Button) findViewById(R.id.btnmul);
bdiv= (Button) findViewById(R.id.btndiv);
bdot= (Button) findViewById(R.id.btndot);
bequal= (Button) findViewById(R.id.btnequel);
b10= (Button) findViewById(R.id.btn10);
b12= (Button) findViewById(R.id.btn12);
ans = (TextView) findViewById(R.id.Answer);
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(sq==true){
ans.setText(null);
ans.setText(ans.getText()+"1");
sq=false;
}else
ans.setText(ans.getText()+"1");
}
});
b2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(sq==true){
ans.setText(null);
ans.setText(ans.getText()+"2");
sq=false;
}else
ans.setText(ans.getText()+"2");
}
});
b3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(sq==true){
ans.setText(null);
ans.setText(ans.getText()+"3");
sq=false;
}else
ans.setText(ans.getText()+"3");
}
});
b4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(sq==true){
ans.setText(null);
ans.setText(ans.getText()+"4");
sq=false;
}else
ans.setText(ans.getText()+"4");
}
});
b5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(sq==true){
ans.setText(null);
ans.setText(ans.getText()+"5");
sq=false;
}else
ans.setText(ans.getText()+"5");
}
});
b6.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(sq==true){
ans.setText(null);
ans.setText(ans.getText()+"6");
sq=false;
}else
ans.setText(ans.getText()+"6");
}
});
b7.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(sq==true){
ans.setText(null);
ans.setText(ans.getText()+"7");
sq=false;
}else
ans.setText(ans.getText()+"7");
}
});
b8.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(sq==true){
ans.setText(null);
ans.setText(ans.getText()+"8");
sq=false;
}else
ans.setText(ans.getText()+"8");
}
});
b9.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(sq==true) {
ans.setText(null);
ans.setText(ans.getText()+"9");
sq=false;
}else
ans.setText(ans.getText()+"9");
}
});
b0.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(sq==true){
ans.setText(null);
ans.setText(ans.getText()+"0");
sq=false;
}else
ans.setText(ans.getText()+"0");
}
});
bdot.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
try {
if(ans.getText().toString().contains("."))
ans.setText(ans.getText()+"");
else
ans.setText(ans.getText()+".");
} catch (Exception e) {
ans.setText("出错");
}
}
});
badd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
try {
var1 = Double.parseDouble(ans.getText()+"");
add=true;
ans.setText(null);
}catch (RuntimeException a){
ans.setText("错误");
sq=true;
}
}
});
bsub.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
try {
var1 = Double.parseDouble(ans.getText()+"");
sub=true;
ans.setText(null);
}catch(RuntimeException a){
ans.setText("错误");
sq=true;
}
}
});
bmul.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
try {
var1 = Double.parseDouble(ans.getText()+"");
mul=true;
ans.setText(null);
}catch(RuntimeException a){
ans.setText("错误");
sq=true;
}
}
});
bdiv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
/*var1 = Double.parseDouble(ans.getText()+"");
div=true;
ans.setText(null);*/
try {
var1 = Double.parseDouble(ans.getText()+"");
div=true;
ans.setText(null);
}catch(RuntimeException a){
ans.setText("错误");
sq=true;
}
}
});
b10.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ans.setText(null);
add=false;sub=false;mul=false;div=false;
}
});
b12.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
try {
String temp = "";
temp = ans.getText().toString().substring(0, ans.length() - 1);
ans.setText(temp + "");
}catch(RuntimeException a){
ans.setText("错误");
}
}
});
bequal.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
try {
var2 = Double.parseDouble(ans.getText() + "");
if (add == true) {
ans.setText(var1 + var2 + "");
add = false;
sq = true;
}
if (sub == true) {
ans.setText(var1 - var2 + "");
sub = false;
sq = true;
}
if (mul == true) {
ans.setText(var1 * var2 + "");
mul = false;
sq = true;
}
if (div == true) {
ans.setText(var1 / var2 + "");
div = false;
sq = true;
}
if (n10 == true) {
ans.setText(0 + "");
n10 = false;
sq = true;
}
}catch(RuntimeException a){
}
/*String temp="";
temp=ans.getText().toString().substring(0,ans.length()-1);
ans.setText(temp+"");*/
}
});
// public void opratorCalc(String operatorNumber,String currentOprator)
// {
// if(TextUtils.isEmpty(lastOperators))
// {
// firstNumber = Double.parseDouble(operatorNumber);
// return;
// }
}
}