您的位置:

大学生Android实验:从零搭建简单计算器应用

一、前言

随着智能手机的普及,手机应用的开发成为了许多人关注的焦点。而Android作为最为流行的操作系统之一,其应用的开发也越来越受到大众的关注。本篇文章将带领初学者从零开始搭建一个简单的计算器应用,并讲解其中的一些基础知识。

二、开发环境配置

在开始编写代码之前,我们需要配置好Android开发环境。首先要下载安装Android Studio,该软件集成了一系列Android开发所需要的工具和库,并提供了强大的IDE和调试功能。

在安装完Android Studio之后,我们还需要在SDK Manager中下载所需的Android SDK和Android Virtual Device。其中Android SDK是开发Android应用所必须的一些库和工具,而Android Virtual Device是用于模拟Android设备的虚拟机。

安装好所需的工具之后,我们就可以开始开发我们的第一个Android应用了。

三、UI设计

计算器应用的主要界面需要包括数字按键、运算符号按键、清除按钮以及结果显示区域。我们需要在res/layout目录下创建一个新的xml文件,来定义应用的UI界面。以下是一个例子:

<?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" >

    <TextView
        android:id="@+id/result"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="24sp"
        android:textStyle="bold"
        android:gravity="right"
        android:padding="16dp" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/btn_1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="1"
            android:layout_weight="1" />

        <Button
            android:id="@+id/btn_2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="2"
            android:layout_weight="1" />

        <Button
            android:id="@+id/btn_3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="3"
            android:layout_weight="1" />

        <Button
            android:id="@+id/add"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="+"
            android:layout_weight="1" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/btn_4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="4"
            android:layout_weight="1" />

        <Button
            android:id="@+id/btn_5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="5"
            android:layout_weight="1" />

        <Button
            android:id="@+id/btn_6"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="6"
            android:layout_weight="1" />

        <Button
            android:id="@+id/subtract"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="-"
            android:layout_weight="1" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/btn_7"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="7"
            android:layout_weight="1" />

        <Button
            android:id="@+id/btn_8"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="8"
            android:layout_weight="1" />

        <Button
            android:id="@+id/btn_9"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="9"
            android:layout_weight="1" />

        <Button
            android:id="@+id/multiply"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="*"
            android:layout_weight="1" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/btn_clear"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="C"
            android:layout_weight="1" />

        <Button
            android:id="@+id/btn_0"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="0"
            android:layout_weight="1" />

        <Button
            android:id="@+id/equal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="="
            android:layout_weight="1" />

        <Button
            android:id="@+id/divide"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="/"
            android:layout_weight="1" />

    </LinearLayout>

</LinearLayout>

以上代码定义了一个线性布局,首先包含了一个TextView用于显示计算结果。接下来分几行定义了数字按键、运算符号按键和一个清除按钮的水平布局,其中每个按键都使用了Button控件,并通过layout_weight属性来使它们平均分配布局空间,并填满整行。最后再定义一个包含“/”符号的运算符按键以及一个包含“=”符号的等于按钮,它们都与数字按键和其他运算符按键一样。

四、Java代码实现

可以在res/layout文件夹中的xml文件中定义应用的UI界面,但是如果要使应用具有一定的功能,就需要在Java代码中实现它们。以下是一个简单的实现:

package com.example.calculator;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private TextView result;
    private double num1, num2;
    private String operator;

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

    private void initView() {
        result = findViewById(R.id.result);
        findViewById(R.id.btn_0).setOnClickListener(this);
        findViewById(R.id.btn_1).setOnClickListener(this);
        findViewById(R.id.btn_2).setOnClickListener(this);
        findViewById(R.id.btn_3).setOnClickListener(this);
        findViewById(R.id.btn_4).setOnClickListener(this);
        findViewById(R.id.btn_5).setOnClickListener(this);
        findViewById(R.id.btn_6).setOnClickListener(this);
        findViewById(R.id.btn_7).setOnClickListener(this);
        findViewById(R.id.btn_8).setOnClickListener(this);
        findViewById(R.id.btn_9).setOnClickListener(this);
        findViewById(R.id.add).setOnClickListener(this);
        findViewById(R.id.subtract).setOnClickListener(this);
        findViewById(R.id.multiply).setOnClickListener(this);
        findViewById(R.id.divide).setOnClickListener(this);
        findViewById(R.id.btn_clear).setOnClickListener(this);
        findViewById(R.id.equal).setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn_0:
            case R.id.btn_1:
            case R.id.btn_2:
            case R.id.btn_3:
            case R.id.btn_4:
            case R.id.btn_5:
            case R.id.btn_6:
            case R.id.btn_7:
            case R.id.btn_8:
            case R.id.btn_9:
                Button btn = (Button) v;
                String str = btn.getText().toString();
                result.append(str);
                break;
            case R.id.add:
            case R.id.subtract:
            case R.id.multiply:
            case R.id.divide:
                Button btnOperator = (Button) v;
                num1 = Double.parseDouble(result.getText().toString());
                operator = btnOperator.getText().toString();
                result.setText("");
                break;
            case R.id.btn_clear:
                result.setText("");
                break;
            case R.id.equal:
                num2 = Double.parseDouble(result.getText().toString());
                double resultNum = 0;
                switch (operator) {
                    case "+":
                        resultNum = num1 + num2;
                        break;
                    case "-":
                        resultNum = num1 - num2;
                        break;
                    case "*":
                        resultNum = num1 * num2;
                        break;
                    case "/":
                        if (num2 == 0) {
                            resultNum = Double.NaN;
                        } else {
                            resultNum = num1 / num2;
                        }
                        break;
                }
                result.setText(String.valueOf(resultNum));
                break;
            default:
                break;
        }
    }
}

在MainActivity类中,我们定义了许多变量和方法。num1和num2是用于记录计算操作数字的双精度浮点数,而operator是用于记录所使用的运算符的字符串。initView()方法初始化了控件,并为每个数字按钮、每个运算符号按钮、清除按钮和等于按钮添加点击事件监听器。

点击事件onClick(View v)方法中定义了按钮的点击事件处理逻辑。当点击数字按钮时,获取其文本并将其追加到结果显示区域上;当点击运算符按钮时,将结果显示区域的内容转换为num1,将运算符记录在operator中,并将结果显示区域清空;当点击清除按钮时,可以清除结果显示区域的内容;当点击等于按钮时,将结果显示区域中的内容转换为num2,根据所使用的运算符计算结果,并将计算结果显示在结果显示区域上。

五、应用体验

打开模拟器或在真实的Android设备上运行这个计算器应用,您将得到以下界面:

在这个演示应用中,可以执行加、减、乘和除四种操作,并可以执行连续的操作,最终显示计算结果。

六、总结

本篇文章讲解了开发一个简单计算器应用所需的基本知识。通过XML定义UI界面和Java代码实现功能逻辑,我们可以在Android操作系统上构建出一个完整而有用的应用。

大学生Android实验:从零搭建简单计算器应用

2023-05-14
从零开始,用Python学习制作Android应用

在过去,Android应用的开发需要掌握Java等语言和相关框架,这对于一些初学者来说是很困难的,不过现在Python可以作为一种新的选择,能够轻松地进行Android应用的开发,而且Python语言

2023-12-08
Android开发入门教程:从零基础到实现第一个APP

2023-05-14
学习构建基于Python的Android应用程序

2023-05-14
下载python蚁群算法实现的简单介绍

2022-11-10
通过Android Studio构建强大的Android应用

2023-05-14
java学习的一些基础笔记(java初学笔记)

2022-11-14
印象笔记记录java学习(Java成长笔记)

2022-11-12
提升用户体验的Android主题设计

2023-05-14
java学习笔记(java初学笔记)

2022-11-14
快速创建Android项目: 从零到一

2023-05-14
从零开始搭建python的简单介绍

2022-11-20
Android Studio制作实用的计算器

2023-05-14
海翔的php学习日记(php课堂笔记)

2022-11-13
python学习系列day3(大学python笔记)

2022-11-15
Android任务:实现简单的计算器功能

2023-05-14
php从零基础到项目实践,从零开始学php

2022-11-21
Android Studio和Ubuntu:用Python从

在移动应用市场的激烈竞争下,拥有一款完整而稳定的移动应用程序变得越来越重要。而在Android Studio和Ubuntu平台上使用Python语言构建完整的移动应用程序是一种非常有效的方法,本文将从

2023-12-08
Android Studio和Ubuntu:用Python从

在移动应用市场的激烈竞争下,拥有一款完整而稳定的移动应用程序变得越来越重要。而在Android Studio和Ubuntu平台上使用Python语言构建完整的移动应用程序是一种非常有效的方法,本文将从

2023-12-08
用java搭建安卓端商城app,android商城开源项目

2022-11-22