用Android studio编写一个计算器页面
时间: 2023-11-30 15:03:24 浏览: 81
好的,以下是一个简单的计算器页面的代码示例:
首先,在Android Studio中创建一个新的项目(Project),然后在res/layout文件夹下创建一个新的xml布局文件,命名为calculator.xml。在该布局文件中添加如下代码:
```xml
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/result"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="50sp"
android:layout_gravity="end"
android:padding="10dp"
android:textAlignment="textEnd"
android:text="0"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/button_7"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="7"/>
<Button
android:id="@+id/button_8"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="8"/>
<Button
android:id="@+id/button_9"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="9"/>
<Button
android:id="@+id/button_divide"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="/"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/button_4"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="4"/>
<Button
android:id="@+id/button_5"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="5"/>
<Button
android:id="@+id/button_6"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="6"/>
<Button
android:id="@+id/button_multiply"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="*"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/button_1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="1"/>
<Button
android:id="@+id/button_2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="2"/>
<Button
android:id="@+id/button_3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="3"/>
<Button
android:id="@+id/button_minus"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="-"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/button_0"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="0"/>
<Button
android:id="@+id/button_dot"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="."/>
<Button
android:id="@+id/button_equal"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="="/>
<Button
android:id="@+id/button_plus"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="+"/>
</LinearLayout>
</LinearLayout>
```
在该布局文件中,我们使用了LinearLayout布局来实现按钮和文本框的排列。在按钮中,我们使用了android:layout_weight属性来使它们平均分配水平空间。
接下来,在MainActivity.java文件中添加如下代码:
```java
public class MainActivity extends AppCompatActivity {
private TextView result;
private Button button_0, button_1, button_2, button_3, button_4, button_5, button_6, button_7, button_8, button_9;
private Button button_plus, button_minus, button_multiply, button_divide, button_dot, button_equal;
private String currentNumber = "0";
private String operator = "";
private String lastNumber = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
result = findViewById(R.id.result);
button_0 = findViewById(R.id.button_0);
button_1 = findViewById(R.id.button_1);
button_2 = findViewById(R.id.button_2);
button_3 = findViewById(R.id.button_3);
button_4 = findViewById(R.id.button_4);
button_5 = findViewById(R.id.button_5);
button_6 = findViewById(R.id.button_6);
button_7 = findViewById(R.id.button_7);
button_8 = findViewById(R.id.button_8);
button_9 = findViewById(R.id.button_9);
button_plus = findViewById(R.id.button_plus);
button_minus = findViewById(R.id.button_minus);
button_multiply = findViewById(R.id.button_multiply);
button_divide = findViewById(R.id.button_divide);
button_dot = findViewById(R.id.button_dot);
button_equal = findViewById(R.id.button_equal);
button_0.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
numberPressed("0");
}
});
button_1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
numberPressed("1");
}
});
button_2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
numberPressed("2");
}
});
button_3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
numberPressed("3");
}
});
button_4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
numberPressed("4");
}
});
button_5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
numberPressed("5");
}
});
button_6.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
numberPressed("6");
}
});
button_7.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
numberPressed("7");
}
});
button_8.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
numberPressed("8");
}
});
button_9.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
numberPressed("9");
}
});
button_plus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
operatorPressed("+");
}
});
button_minus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
operatorPressed("-");
}
});
button_multiply.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
operatorPressed("*");
}
});
button_divide.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
operatorPressed("/");
}
});
button_dot.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!currentNumber.contains(".")) {
currentNumber += ".";
result.setText(currentNumber);
}
}
});
button_equal.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (operator.isEmpty()) {
return;
}
double num1 = Double.parseDouble(lastNumber);
double num2 = Double.parseDouble(currentNumber);
switch (operator) {
case "+":
currentNumber = String.valueOf(num1 + num2);
break;
case "-":
currentNumber = String.valueOf(num1 - num2);
break;
case "*":
currentNumber = String.valueOf(num1 * num2);
break;
case "/":
currentNumber = String.valueOf(num1 / num2);
break;
}
result.setText(currentNumber);
lastNumber = currentNumber;
currentNumber = "0";
operator = "";
}
});
}
private void numberPressed(String number) {
if (currentNumber.equals("0")) {
currentNumber = number;
} else {
currentNumber += number;
}
result.setText(currentNumber);
}
private void operatorPressed(String op) {
if (operator.isEmpty()) {
lastNumber = currentNumber;
currentNumber = "0";
operator = op;
}
}
}
```
在该代码中,我们首先定义了各个控件,并在onCreate方法中初始化它们。然后,我们为数字键和操作符键添加了点击事件。在numberPressed方法中,我们检查当前数字是否为0,如果是,则将其替换为新的数字。在operatorPressed方法中,我们存储上一个数字和当前操作符,并将当前数字重置为0。
最后,我们在button_equal的点击事件中执行所选操作,并将结果显示在文本框中。
完成后,运行该应用程序,即可看到一个简单的计算器页面,可以进行加、减、乘、除等基本运算。
阅读全文