安卓开发入门:手把手教你打造简易计算器App
作者:admin
发表于:2025-03-10
安卓App开发实例:简单计算器应用
1. 项目概述
本项目是一个简单的安卓计算器应用,用户可以通过点击按钮输入数字和运算符,进行基本的加减乘除运算。应用界面简洁,功能明确,适合初学者学习安卓开发。
2. 开发环境
- 操作系统:Windows 10
- 开发工具:Android Studio 4.2
- 编程语言:Java
- 最低API级别:API 21 (Android 5.0 Lollipop)
3. 项目结构
CalculatorApp/
├── app/
│ ├── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ └── calculatorapp/
│ │ │ │ ├── MainActivity.java
│ │ │ ├── res/
│ │ │ │ ├── layout/
│ │ │ │ │ ├── activity_main.xml
│ │ │ │ ├── values/
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── dimens.xml
│ │ │ ├── AndroidManifest.xml
│ ├── build.gradle
│ ├── proguard-rules.pro
├── build.gradle
├── settings.gradle
4. 界面设计
4.1 activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp">
<EditText
android:id="@+id/et_display"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="0"
android:textSize="24sp"
android:gravity="right"
android:editable="false"
android:background="@null" />
<GridLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnCount="4"
android:rowCount="5">
<Button
android:id="@+id/btn_7"
android:text="7"
android:layout_columnWeight="1"
android:layout_rowWeight="1" />
<Button
android:id="@+id/btn_8"
android:text="8"
android:layout_columnWeight="1"
android:layout_rowWeight="1" />
<Button
android:id="@+id/btn_9"
android:text="9"
android:layout_columnWeight="1"
android:layout_rowWeight="1" />
<Button
android:id="@+id/btn_divide"
android:text="/"
android:layout_columnWeight="1"
android:layout_rowWeight="1" />
<Button
android:id="@+id/btn_4"
android:text="4"
android:layout_columnWeight="1"
android:layout_rowWeight="1" />
<Button
android:id="@+id/btn_5"
android:text="5"
android:layout_columnWeight="1"
android:layout_rowWeight="1" />
<Button
android:id="@+id/btn_6"
android:text="6"
android:layout_columnWeight="1"
android:layout_rowWeight="1" />
<Button
android:id="@+id/btn_multiply"
android:text="*"
android:layout_columnWeight="1"
android:layout_rowWeight="1" />
<Button
android:id="@+id/btn_1"
android:text="1"
android:layout_columnWeight="1"
android:layout_rowWeight="1" />
<Button
android:id="@+id/btn_2"
android:text="2"
android:layout_columnWeight="1"
android:layout_rowWeight="1" />
<Button
android:id="@+id/btn_3"
android:text="3"
android:layout_columnWeight="1"
android:layout_rowWeight="1" />
<Button
android:id="@+id/btn_subtract"
android:text="-"
android:layout_columnWeight="1"
android:layout_rowWeight="1" />
<Button
android:id="@+id/btn_0"
android:text="0"
android:layout_columnWeight="1"
android:layout_rowWeight="1" />
<Button
android:id="@+id/btn_dot"
android:text="."
android:layout_columnWeight="1"
android:layout_rowWeight="1" />
<Button
android:id="@+id/btn_equals"
android:text="="
android:layout_columnWeight="1"
android:layout_rowWeight="1" />
<Button
android:id="@+id/btn_add"
android:text="+"
android:layout_columnWeight="1"
android:layout_rowWeight="1" />
</GridLayout>
</LinearLayout>
4.2 strings.xml
<resources>
<string name="app_name">Calculator</string>
</resources>
4.3 colors.xml
<resources>
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color>
</resources>
4.4 dimens.xml
<resources>
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
</resources>
5. 功能实现
5.1 MainActivity.java
package com.example.calculatorapp;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private EditText etDisplay;
private String currentNumber = "";
private String operator = "";
private double result = 0.0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
etDisplay = findViewById(R.id.et_display);
setupButtons();
}
private void setupButtons() {
int[] buttonIds = {
R.id.btn_0, R.id.btn_1, R.id.btn_2, R.id.btn_3, R.id.btn_4,
R.id.btn_5, R.id.btn_6, R.id.btn_7, R.id.btn_8, R.id.btn_9,
R.id.btn_dot, R.id.btn_add, R.id.btn_subtract, R.id.btn_multiply,
R.id.btn_divide, R.id.btn_equals
};
for (int id : buttonIds) {
findViewById(id).setOnClickListener(this::onButtonClick);
}
}
private void onButtonClick(View view) {
Button button = (Button) view;
String buttonText = button.getText().toString();
switch (buttonText) {
case "0":
case "1":
case "2":
case "3":
case "4":
case "