Android Studio写一个计算器

流程概览

下面是实现一个简单的计算器的步骤概览:

步骤 操作
1 创建一个新的Android项目
2 在布局文件中设计计算器的界面
3 在MainActivity中处理计算逻辑
4 运行应用并测试

详细步骤

1. 创建一个新的Android项目

首先,在Android Studio中创建一个新的Android项目。在项目创建过程中,可以选择自定义的包名和最低支持的安卓版本。

2. 设计计算器的界面

在res/layout目录下的activity_main.xml文件中,使用布局组件设计计算器的界面。可以使用LinearLayout、GridLayout或者TableLayout等布局组件来实现。

<LinearLayout xmlns:android="
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <!-- 显示运算结果的TextView -->
    <TextView
        android:id="@+id/resultTextView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="24sp"
        android:gravity="end"
        android:padding="8dp"
        android:text="0" />

    <!-- 数字按钮的GridLayout -->
    <GridLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:columnCount="4"
        android:rowCount="5">

        <!-- 数字按钮 -->
        <Button
            android:id="@+id/button1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_columnWeight="1"
            android:layout_rowWeight="1"
            android:text="1" />

        <Button
            android:id="@+id/button2"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_columnWeight="1"
            android:layout_rowWeight="1"
            android:text="2" />

        <!-- ... 其他数字按钮 ... -->

        <!-- 运算符按钮 -->
        <Button
            android:id="@+id/buttonPlus"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_columnWeight="1"
            android:layout_rowWeight="1"
            android:text="+" />

        <!-- ... 其他运算符按钮 ... -->

        <!-- 等号按钮 -->
        <Button
            android:id="@+id/buttonEquals"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_columnSpan="2"
            android:layout_columnWeight="2"
            android:text="=" />

        <!-- 清除按钮 -->
        <Button
            android:id="@+id/buttonClear"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_columnWeight="1"
            android:text="C" />

    </GridLayout>

</LinearLayout>

3. 处理计算逻辑

在MainActivity中处理计算逻辑,这里可以借助一个计算器类来执行实际的计算操作。

首先,在MainActivity中声明所需的变量和控件:

public class MainActivity extends AppCompatActivity {

    private TextView resultTextView;
    private Button button1;
    private Button button2;
    // ...

    private String currentNumber;
    private String currentOperator;
    private Calculator calculator;

    // ...
}

在onCreate方法中,初始化控件和变量,设置按钮的点击事件监听器:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // 初始化控件
    resultTextView = findViewById(R.id.resultTextView);
    button1 = findViewById(R.id.button1);
    button2 = findViewById(R.id.button2);
    // ...

    // 初始化变量
    currentNumber = "";
    currentOperator = "";
    calculator = new Calculator();

    // 设置按钮点击事件监听器
    button1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            appendNumber("1");
        }
    });

    button2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            appendNumber("2");
        }
    });

    // ...

    buttonPlus.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            setOperator("+");
        }
    });

    // ...

    buttonEquals.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            calculate();
        }
    });

    buttonClear.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            clear();