android实现一个简易多功能计算器代码和布局文件
时间: 2024-02-03 13:15:24 浏览: 30
以下是一个简单的 Android 计算器的布局文件和代码:
layout/activity_main.xml
```xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/tv_result"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="30sp"
android:padding="16dp"
android:gravity="right"
android:textColor="@android:color/black" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/btn_clear"
android:text="C"
android:textSize="24sp"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<Button
android:id="@+id/btn_divide"
android:text="/"
android:textSize="24sp"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<Button
android:id="@+id/btn_multiply"
android:text="*"
android:textSize="24sp"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<Button
android:id="@+id/btn_minus"
android:text="-"
android:textSize="24sp"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/btn_7"
android:text="7"
android:textSize="24sp"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<Button
android:id="@+id/btn_8"
android:text="8"
android:textSize="24sp"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<Button
android:id="@+id/btn_9"
android:text="9"
android:textSize="24sp"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<Button
android:id="@+id/btn_plus"
android:text="+"
android:textSize="24sp"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/btn_4"
android:text="4"
android:textSize="24sp"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<Button
android:id="@+id/btn_5"
android:text="5"
android:textSize="24sp"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<Button
android:id="@+id/btn_6"
android:text="6"
android:textSize="24sp"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<Button
android:id="@+id/btn_equals"
android:text="="
android:textSize="24sp"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/btn_1"
android:text="1"
android:textSize="24sp"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<Button
android:id="@+id/btn_2"
android:text="2"
android:textSize="24sp"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<Button
android:id="@+id/btn_3"
android:text="3"
android:textSize="24sp"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<Button
android:id="@+id/btn_decimal"
android:text="."
android:textSize="24sp"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content" />
</LinearLayout>
<Button
android:id="@+id/btn_0"
android:text="0"
android:textSize="24sp"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
```
Java/MainActivity.java
```java
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private TextView tvResult;
private Button btnClear, btnDivide, btnMultiply, btnMinus, btnPlus, btnEquals, btnDecimal;
private Button btn0, btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9;
private String currentNumber = "";
private String operation = "";
private double result = 0.0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvResult = findViewById(R.id.tv_result);
btnClear = findViewById(R.id.btn_clear);
btnDivide = findViewById(R.id.btn_divide);
btnMultiply = findViewById(R.id.btn_multiply);
btnMinus = findViewById(R.id.btn_minus);
btnPlus = findViewById(R.id.btn_plus);
btnEquals = findViewById(R.id.btn_equals);
btnDecimal = findViewById(R.id.btn_decimal);
btn0 = findViewById(R.id.btn_0);
btn1 = findViewById(R.id.btn_1);
btn2 = findViewById(R.id.btn_2);
btn3 = findViewById(R.id.btn_3);
btn4 = findViewById(R.id.btn_4);
btn5 = findViewById(R.id.btn_5);
btn6 = findViewById(R.id.btn_6);
btn7 = findViewById(R.id.btn_7);
btn8 = findViewById(R.id.btn_8);
btn9 = findViewById(R.id.btn_9);
btnClear.setOnClickListener(this);
btnDivide.setOnClickListener(this);
btnMultiply.setOnClickListener(this);
btnMinus.setOnClickListener(this);
btnPlus.setOnClickListener(this);
btnEquals.setOnClickListener(this);
btnDecimal.setOnClickListener(this);
btn0.setOnClickListener(this);
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
btn3.setOnClickListener(this);
btn4.setOnClickListener(this);
btn5.setOnClickListener(this);
btn6.setOnClickListener(this);
btn7.setOnClickListener(this);
btn8.setOnClickListener(this);
btn9.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.btn_clear:
currentNumber = "";
operation = "";
result = 0.0;
tvResult.setText("");
break;
case R.id.btn_divide:
performOperation("/");
break;
case R.id.btn_multiply:
performOperation("*");
break;
case R.id.btn_minus:
performOperation("-");
break;
case R.id.btn_plus:
performOperation("+");
break;
case R.id.btn_equals:
calculateResult();
break;
case R.id.btn_decimal:
if (!currentNumber.contains(".")) {
currentNumber += ".";
}
tvResult.setText(currentNumber);
break;
case R.id.btn_0:
appendNumber("0");
break;
case R.id.btn_1:
appendNumber("1");
break;
case R.id.btn_2:
appendNumber("2");
break;
case R.id.btn_3:
appendNumber("3");
break;
case R.id.btn_4:
appendNumber("4");
break;
case R.id.btn_5:
appendNumber("5");
break;
case R.id.btn_6:
appendNumber("6");
break;
case R.id.btn_7:
appendNumber("7");
break;
case R.id.btn_8:
appendNumber("8");
break;
case R.id.btn_9:
appendNumber("9");
break;
}
}
private void appendNumber(String number) {
currentNumber += number;
tvResult.setText(currentNumber);
}
private void performOperation(String op) {
if (operation.isEmpty()) {
result = Double.parseDouble(currentNumber);
operation = op;
currentNumber = "";
} else {
calculateResult();
operation = op;
}
}
private void calculateResult() {
if (operation.isEmpty()) {
return;
}
double secondNumber = Double.parseDouble(currentNumber);
switch (operation) {
case "+":
result += secondNumber;
break;
case "-":
result -= secondNumber;
break;
case "*":
result *= secondNumber;
break;
case "/":
result /= secondNumber;
break;
}
currentNumber = "";
operation = "";
tvResult.setText(String.valueOf(result));
}
}
```