我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android Studio:一个简单的计算器app的实现过程<初级>

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android Studio:一个简单的计算器app的实现过程<初级>

📌Android Studio 专栏正在持续更新中,案例的原理图解析、各种模块分析💖这里都有哦,同时也欢迎大家订阅专栏,获取更多详细信息哦✊✊✊
✨个人主页:零小唬的博客主页
🥂欢迎大家 👍点赞 📨评论 🔔收藏
✨作者简介:20级计算机专业学生一枚,来自宁夏,可能会去做大前端,目前还在努力学习并记录博客中🧸
🎀本系列专栏: Android Studio
💕希望本文对你在学习Android Studio的过程中有所帮助,如有不足请指正一起学习,一起进步🥇
⛪座右铭:只要你还愿意努力,世界一定会给你惊喜


实验说明

设计一个移动端的计算器App。

  1. 要求向一般计算器一样可以进行加、减、乘、除、清零操作。
  2. 按下等号显示区将显示结果,其中显示区在输入时将实时显示来自虚拟键盘胡输入信息。
  3. 按键需要添加交互式功能,其中包括当按下虚拟键盘时,被按下胡按键背景变亮,当离开按键后,按键背景正常。
    效果图如下(仅供参考, 布局不需要一致,JAVA计算器视频已上传到“课堂派”资料区,供大家参考):
    在这里插入图片描述

     👆注:本实验来自帅帅的作业实验


简单的移动端计算器 App 的设计和实现的步骤和要点:

  • 界面设计和布局

  根据要求,需要创建一个包括操作区和显示区的界面。操作区应该包括虚拟键盘和清零按钮,而显示区应该用于显示输入和输出。可以使用 Android 提供的 UI 元素来设计和布局界面,如 LinearLayout、TextView 和 Button。

  • 实现基本计算功能

  要实现基本的计算功能,可以创建一个类,该类包含了执行基本操作的方法,通过在 Activity 中调用这些方法,可以执行所需的计算并更新显示区域来显示结果。

  • 实现虚拟键盘按钮的交互

  可以通过添加按钮状态监听器来实现按下、释放和单击事件的交互式功能。这可以通过为每个按钮创建一个类来实现,该类实现 View.OnClickListener 接口并处理所有虚拟键盘按钮的单击事件。
  在上面创建的 类中,可以使用 setOnTouchListener() 方法来设置按钮状态的监听器。在按下按钮时,可以更改按钮的背景颜色以指示其处于活动状态。当释放按钮时,可以将按钮背景颜色恢复为常规颜色。

  • 实现清零操作

  可以创建一个方法来执行清零操作,并将该方法与清零按钮的单击事件相关联。清零操作应该将输入区和显示区的所有变量重置为其默认状态。

  • 实现实时显示输入的信息

  可以使用 TextView 来实现在用户输入时实时更新显示区的内容。在输入期间更新文本,并在最后显示结果。

  这些步骤和功能的实现可以使用 Java/Android 和 XML 来实现。通过正确设计和实现这些功能,可以创建一个简单但实用的移动端计算器 App


  基本布局推荐使用帅帅说的布局格式👇

  

  如上图所示一共有18个Button按钮一个Text View文本框

XML代码

<Button        android:layout_width="90dp"        android:layout_height="71dp"        android:layout_marginStart="8dp"        android:backgroundTint="#EA0303"        android:text="AC"        app:layout_constraintBottom_toBottomOf="parent"        app:layout_constraintEnd_toEndOf="parent"        app:layout_constraintHorizontal_bias="0.0"        app:layout_constraintStart_toStartOf="parent"        app:layout_constraintTop_toTopOf="parent"        app:layout_constraintVertical_bias="0.524"        app:rippleColor="#CB0808"        tools:ignore="HardcodedText" />    <Button        android:layout_width="90dp"        android:layout_height="71dp"        android:layout_marginStart="8dp"        android:text="DEL"        app:layout_constraintStart_toEndOf="@+id/btn_ac"        app:layout_constraintTop_toTopOf="@+id/btn_ac"        tools:ignore="HardcodedText,TextContrastCheck" />    <Button        android:layout_width="90dp"        android:layout_height="71dp"        android:layout_marginStart="8dp"        android:text="*"        app:layout_constraintStart_toEndOf="@+id/btn_del"        app:layout_constraintTop_toTopOf="@+id/btn_del"        tools:ignore="HardcodedText,TextContrastCheck" />    <Button        android:layout_width="90dp"        android:layout_height="71dp"        android:layout_marginStart="8dp"        android:layout_marginEnd="4dp"        android:text="/"        app:layout_constraintEnd_toEndOf="parent"        app:layout_constraintHorizontal_bias="0.0"        app:layout_constraintStart_toEndOf="@+id/btn_mul"        app:layout_constraintTop_toTopOf="@+id/btn_mul"        tools:ignore="HardcodedText,TextContrastCheck" />    <Button        android:layout_width="90dp"        android:layout_height="71dp"        android:text="7"        app:layout_constraintStart_toStartOf="@+id/btn_ac"        app:layout_constraintTop_toBottomOf="@+id/btn_ac"        tools:ignore="HardcodedText,TextContrastCheck" />    <Button        android:layout_width="90dp"        android:layout_height="71dp"        android:layout_marginStart="8dp"        android:text="8"        app:layout_constraintStart_toEndOf="@+id/btn_7"        app:layout_constraintTop_toBottomOf="@+id/btn_del"        tools:ignore="HardcodedText,TextContrastCheck" />    <Button        android:layout_width="90dp"        android:layout_height="71dp"        android:layout_marginStart="8dp"        android:text="9"        app:layout_constraintStart_toEndOf="@+id/btn_8"        app:layout_constraintTop_toBottomOf="@+id/btn_mul"        tools:ignore="HardcodedText,TextContrastCheck" />    <Button        android:layout_width="90dp"        android:layout_height="71dp"        android:layout_marginStart="8dp"        android:text="+"        app:layout_constraintStart_toEndOf="@+id/btn_9"        app:layout_constraintTop_toBottomOf="@+id/btn_div"        tools:ignore="HardcodedText,TextContrastCheck" />    <Button        android:layout_width="90dp"        android:layout_height="71dp"        android:text="4"        app:layout_constraintStart_toStartOf="@+id/btn_7"        app:layout_constraintTop_toBottomOf="@+id/btn_7"        tools:ignore="HardcodedText,TextContrastCheck" />    <Button        android:layout_width="90dp"        android:layout_height="71dp"        android:layout_marginStart="8dp"        android:text="5"        app:layout_constraintStart_toEndOf="@+id/btn_4"        app:layout_constraintTop_toBottomOf="@+id/btn_8"        tools:ignore="HardcodedText,TextContrastCheck" />    <Button        android:layout_width="90dp"        android:layout_height="71dp"        android:layout_marginStart="8dp"        android:text="6"        app:layout_constraintStart_toEndOf="@+id/btn_5"        app:layout_constraintTop_toBottomOf="@+id/btn_9"        tools:ignore="HardcodedText,TextContrastCheck" />    <Button        android:layout_width="90dp"        android:layout_height="71dp"        android:layout_marginStart="8dp"        android:text="-"        app:layout_constraintStart_toEndOf="@+id/btn_6"        app:layout_constraintTop_toBottomOf="@+id/btn_add"        tools:ignore="HardcodedText,TextContrastCheck" />    <Button        android:layout_width="90dp"        android:layout_height="71dp"        android:text="1"        app:layout_constraintStart_toStartOf="@+id/btn_4"        app:layout_constraintTop_toBottomOf="@+id/btn_4"        tools:ignore="HardcodedText,TextContrastCheck" />    <Button        android:layout_width="90dp"        android:layout_height="71dp"        android:layout_marginStart="8dp"        android:text="2"        app:layout_constraintStart_toEndOf="@+id/btn_1"        app:layout_constraintTop_toBottomOf="@+id/btn_5"        tools:ignore="HardcodedText,TextContrastCheck" />    <Button        android:layout_width="90dp"        android:layout_height="71dp"        android:layout_marginStart="8dp"        android:text="3"        app:layout_constraintStart_toEndOf="@+id/btn_2"        app:layout_constraintTop_toBottomOf="@+id/btn_6"        tools:ignore="HardcodedText,TextContrastCheck" />    <Button        android:layout_width="90dp"        android:layout_height="142dp"        android:layout_marginStart="8dp"        android:backgroundTint="#DD4211"        android:text="="        app:layout_constraintStart_toEndOf="@+id/btn_3"        app:layout_constraintTop_toBottomOf="@+id/btn_sub"        tools:ignore="HardcodedText,TextContrastCheck" />    <Button        android:layout_width="188dp"        android:layout_height="71dp"        android:text="0"        app:layout_constraintStart_toStartOf="@+id/btn_1"        app:layout_constraintTop_toBottomOf="@+id/btn_1"        tools:ignore="HardcodedText,TextContrastCheck" />    <Button        android:layout_width="90dp"        android:layout_height="71dp"        android:layout_marginStart="8dp"        android:text="."        app:layout_constraintStart_toEndOf="@+id/btn_0"        app:layout_constraintTop_toBottomOf="@+id/btn_3"        tools:ignore="HardcodedText,TextContrastCheck" />    <TextView        android:layout_width="398dp"        android:layout_height="278dp"        android:layout_marginStart="8dp"        android:layout_marginTop="8dp"        android:layout_marginEnd="8dp"        android:paddingTop="240dp"        android:textSize="24sp"        android:textAlignment="textEnd"        app:layout_constraintBottom_toTopOf="@+id/btn_ac"        app:layout_constraintEnd_toEndOf="parent"        app:layout_constraintHorizontal_bias="1.0"        app:layout_constraintStart_toStartOf="parent"        app:layout_constraintTop_toTopOf="parent"        app:layout_constraintVertical_bias="0.483"        tools:ignore="HardcodedText" />

     👆注:自己为Button添加id属性

Java代码

  • 对于Button0的操作
setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                try {                    double value = Double.parseDouble(operand);                    if (value == (long) value) {                        long intValue = (long) value;                        if (intValue == 0 || !operand.isEmpty()) {operand += "0";                        } else {operand = "0";                        }                        textView.setText(operand);                    } else {                        throw new NumberFormatException();                    }                } catch (NumberFormatException e) {}            }        });
  • 对于Button1的操作
setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                if (operand.equals("0")) {                    operand = "1";                } else {                    operand += "1";                }                updateResult();            }        });
  • 对于Button2的操作
setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                if (operand.equals("0")) {                    operand = "2";                } else {                    operand += "2";                }                updateResult();            }        });
  • 对于Button3的操作
setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                if (operand.equals("0")) {                    operand = "3";                } else {                    operand += "3";                }                updateResult();            }        });
  • 对于Button4的操作
setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                if (operand.equals("0")) {                    operand = "4";                } else {                    operand += "4";                }                updateResult();            }        });
  • 对于Button5的操作
setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                if (operand.equals("0")) {                    operand = "5";                } else {                    operand += "5";                }                updateResult();            }        });
  • 对于Button6的操作
setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                if (operand.equals("0")) {                    operand = "6";                } else {                    operand += "6";                }                updateResult();            }        });
  • 对于Button7的操作
setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                if (operand.equals("0")) {                    operand = "7";                } else {                    operand += "7";                }                updateResult();            }        });
  • 对于Button8的操作
setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                if (operand.equals("0")) {                    operand = "8";                } else {                    operand += "8";                }                updateResult();            }        });
  • 对于Button9的操作
setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                if (operand.equals("0")) {                    operand = "9";                } else {                    operand += "9";                }                updateResult();            }        });
  • 对于=按钮的操作
setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                if (operation.equals("/") && operand.equals("0")) {                    textView.setText("error");                    operand = "";                    errorState = true;                } else {                    double result = 0;                    if (operation.equals("+")) {                        result = operand1 + Double.parseDouble(operand);                    } else if (operation.equals("-")) {                        result = operand1 - Double.parseDouble(operand);                    } else if (operation.equals("*")) {                        result = operand1 * Double.parseDouble(operand);                    } else if (operation.equals("/")) {                        result = operand1 / Double.parseDouble(operand);                    }                    textView.setText(String.valueOf(result));                    operand = "";                    operation = "";                    errorState = false;                }            }        });
  • 对于+按钮的操作
setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                if (!operand.isEmpty() || operation.isEmpty()) {                    if (!operation.isEmpty()) {                        performOperation();                    }                    operation = "+";                    operand1 = Double.parseDouble(operand);                    operand = "";                    errorState = false;                } else if (operand.equals("0")) {                    operand1 = Double.parseDouble(operand);                    operand = "";                    errorState = false;                }            }        });
  • 对于-按钮的操作
setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                if (!operand.isEmpty() || operation.isEmpty()) {                    if (!operation.isEmpty()) {                        performOperation();                    }                    operation = "-";                    operand1 = Double.parseDouble(operand);                    operand = "";                    errorState = false;                } else if (operand.equals("0")) {                    operand1 = Double.parseDouble(operand);                    operand = "";                    errorState = false;                }            }        });
  • 对于*按钮的操作
setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                if (!operand.isEmpty() || operation.isEmpty()) {                    if (!operation.isEmpty()) {                        performOperation();                    }                    operation = "*";                    operand1 = Double.parseDouble(operand);                    operand = "";                    errorState = false;                } else if (operand.equals("0")) {                    operation = "*";                    operand1 = Double.parseDouble(operand);                    operand = "";                    errorState = false;                }            }        });
  • 对于/按钮的操作
setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                operand1 = Double.parseDouble(operand);                operation = "/";                operand = "";            }        });
  • 对于清除按钮的操作
setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                clear();            }        });
  • 对于退格按钮的操作
setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                if (operand.length() > 0) {                    operand = operand.substring(0, operand.length() - 1);                    textView.setText(operand);                }            }        });
  • 对于小数点按钮的操作
setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                if (!operand.contains(".")) {                    operand += ".";                }                updateResult();            }        });

  上面用到三个方法需要自己定义三个方法实现计算并显示的功能

  • performOperation():用于实现加减乘除计算
  • updateResult():用于实时更新用户的输入或者执行结果
  • clear():当按下清除按钮时执行清零操作

  上面的代码基本可以实现部分功能,bug问题几乎没有怎么改,用测试案例测试有几个肯定会崩,后面有时间会改一下bug的,没时间就自己修改喽~~~

    😉😉😉BUG满天飞😇😇😇


  🎉记录是为了不停的思考,创作更是为了更好的思考,有人说过:2023年以后的中国市场将永远属于长期主义者,bug是改不完的也是写不完的,只能说这次遇到了希望下次不会在出现同样的bug就行,如果你觉得对您有帮助,欢迎一起交流学习,本人也是一名计算机小白,目前还在努力中~

来源地址:https://blog.csdn.net/weixin_55804957/article/details/130074043

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android Studio:一个简单的计算器app的实现过程<初级>

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android Studio实现简单计算器APP

一、简介:用Android Studio 实现一个简单的计算器APP,并在蓝叠模拟器中运行。 该计算器只能实现两位数字的四则运算。 二、代码 activity_main.xml ---界面设计
2022-06-06

利用Android实现一个简单的计算器功能

今天就跟大家聊聊有关利用Android实现一个简单的计算器功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 安卓计算器Android calculatorpackage
2023-05-31

android studio怎么实现简单的计算器小功能

这篇文章主要介绍了android studio怎么实现简单的计算器小功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇android studio怎么实现简单的计算器小功能文章都会有所收获,下面我们一起来看看吧
2023-06-30

android studio如何实现简易的计算器

本篇内容主要讲解“android studio如何实现简易的计算器”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“android studio如何实现简易的计算器”吧!先看效果图基本功能:加,减,
2023-06-30

基于Java怎样实现一个简单的单词本Android App

这篇文章跟大家分析一下“基于Java怎样实现一个简单的单词本Android App”。内容详细易懂,对“基于Java怎样实现一个简单的单词本Android App”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮
2023-06-29

Android studio如何实现简易的计算器功能

这篇文章主要讲解了“Android studio如何实现简易的计算器功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Android studio如何实现简易的计算器功能”吧!具体效果如下J
2023-06-30

如何通过C++编写一个简单的计算器程序?

如何通过C++编写一个简单的计算器程序?计算器程序是许多程序员在学习编程过程中的一个常见项目。通过编写一个简单的计算器程序,可以帮助我们学会使用C++语言基础知识,如变量、运算符和控制流语句。以下是一个简单的计算器程序的示例代码。#incl
如何通过C++编写一个简单的计算器程序?
2023-11-02

Android实战教程第一篇之最简单的计算器

从今天开始,本专栏持续更新Android简易实战类博客文章。和以往专栏不同,此专栏只有实例。每个实例尽量按照知识点对应相应一章节的内容去写,循序渐进。有些实例可能会与另一个专栏有重复的文章。开始本专栏的第一个简易案例:首先设置两个布局文件,
2022-06-06

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录