android studio 相对布局实现计算器
时间: 2023-09-14 10:07:40 浏览: 149
下面是一个简单的 Android Studio 相对布局实现计算器的示例代码:
XML 布局文件:
```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="match_parent">
<TextView
android:id="@+id/resultTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="24sp"
android:padding="16dp"
android:textColor="@color/black"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_alignParentStart="true"/>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1"
android:textSize="18sp"
android:layout_below="@id/resultTextView"
android:layout_alignParentStart="true"
android:onClick="onNumberClick"/>
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2"
android:textSize="18sp"
android:layout_below="@id/resultTextView"
android:layout_toEndOf="@id/button1"
android:onClick="onNumberClick"/>
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="3"
android:textSize="18sp"
android:layout_below="@id/resultTextView"
android:layout_toEndOf="@id/button2"
android:onClick="onNumberClick"/>
<Button
android:id="@+id/buttonPlus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="+"
android:textSize="18sp"
android:layout_below="@id/button1"
android:layout_alignParentEnd="true"
android:onClick="onOperatorClick"/>
<Button
android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="4"
android:textSize="18sp"
android:layout_below="@id/button1"
android:layout_alignParentStart="true"
android:onClick="onNumberClick"/>
<Button
android:id="@+id/button5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="5"
android:textSize="18sp"
android:layout_below="@id/button1"
android:layout_toEndOf="@id/button4"
android:onClick="onNumberClick"/>
<Button
android:id="@+id/button6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="6"
android:textSize="18sp"
android:layout_below="@id/button1"
android:layout_toEndOf="@id/button5"
android:onClick="onNumberClick"/>
<Button
android:id="@+id/buttonMinus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="-"
android:textSize="18sp"
android:layout_below="@id/button4"
android:layout_alignParentEnd="true"
android:onClick="onOperatorClick"/>
<Button
android:id="@+id/button7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="7"
android:textSize="18sp"
android:layout_below="@id/button4"
android:layout_alignParentStart="true"
android:onClick="onNumberClick"/>
<Button
android:id="@+id/button8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="8"
android:textSize="18sp"
android:layout_below="@id/button4"
android:layout_toEndOf="@id/button7"
android:onClick="onNumberClick"/>
<Button
android:id="@+id/button9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="9"
android:textSize="18sp"
android:layout_below="@id/button4"
android:layout_toEndOf="@id/button8"
android:onClick="onNumberClick"/>
<Button
android:id="@+id/buttonMultiply"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="*"
android:textSize="18sp"
android:layout_below="@id/button7"
android:layout_alignParentEnd="true"
android:onClick="onOperatorClick"/>
<Button
android:id="@+id/buttonClear"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="C"
android:textSize="18sp"
android:layout_below="@id/button7"
android:layout_alignParentStart="true"
android:onClick="onClearClick"/>
<Button
android:id="@+id/button0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0"
android:textSize="18sp"
android:layout_below="@id/button7"
android:layout_toEndOf="@id/buttonClear"
android:onClick="onNumberClick"/>
<Button
android:id="@+id/buttonEqual"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="="
android:textSize="18sp"
android:layout_below="@id/button7"
android:layout_toEndOf="@id/button0"
android:onClick="onEqualClick"/>
<Button
android:id="@+id/buttonDivide"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="/"
android:textSize="18sp"
android:layout_below="@id/button0"
android:layout_alignParentEnd="true"
android:onClick="onOperatorClick"/>
</RelativeLayout>
```
Java 代码:
```java
public class MainActivity extends AppCompatActivity {
private TextView resultTextView;
private String currentNumber = "";
private String operator = "";
private double firstNumber = 0;
private double secondNumber = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
resultTextView = findViewById(R.id.resultTextView);
}
public void onNumberClick(View view) {
Button button = (Button) view;
currentNumber += button.getText().toString();
resultTextView.setText(currentNumber);
}
public void onOperatorClick(View view) {
Button button = (Button) view;
operator = button.getText().toString();
firstNumber = Double.parseDouble(currentNumber);
currentNumber = "";
}
public void onClearClick(View view) {
currentNumber = "";
operator = "";
firstNumber = 0;
secondNumber = 0;
resultTextView.setText("");
}
public void onEqualClick(View view) {
if (!currentNumber.equals("")) {
secondNumber = Double.parseDouble(currentNumber);
}
switch (operator) {
case "+":
resultTextView.setText(String.valueOf(firstNumber + secondNumber));
break;
case "-":
resultTextView.setText(String.valueOf(firstNumber - secondNumber));
break;
case "*":
resultTextView.setText(String.valueOf(firstNumber * secondNumber));
break;
case "/":
if (secondNumber == 0) {
resultTextView.setText("Error");
} else {
resultTextView.setText(String.valueOf(firstNumber / secondNumber));
}
break;
}
currentNumber = "";
operator = "";
firstNumber = 0;
secondNumber = 0;
}
}
```
这个示例代码演示了使用相对布局实现一个简单的计算器应用程序。它包含数字按钮、加减乘除按钮、清除按钮和等于按钮。当数字按钮被点击时,它们的文本将添加到当前数字中,并在结果文本视图中显示。当加减乘除按钮被点击时,它们的文本将用作操作符,并将当前数字保存为第一个数字。当清除按钮被点击时,所有数据将被重置。当等于按钮被点击时,第二个数字将从当前数字中获取,并执行相应的操作。最终结果将在结果文本视图中显示。