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

这篇具有很好参考价值的文章主要介绍了Android Studio:一个简单的计算器app的实现过程<初级>。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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


实验说明

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

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

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


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

  • 界面设计和布局

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

  • 实现基本计算功能

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

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

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

  • 实现清零操作

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

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

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

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


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

Android Studio:一个简单的计算器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://www.toymoban.com/news/detail-428632.html

到了这里,关于Android Studio:一个简单的计算器app的实现过程<初级>的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 模拟实现一个简单的计算器

    2024年02月11日
    浏览(46)
  • 用代码实现一个简单计算器

    作者主页: paper jie的博客_CSDN博客-C语言,算法详解领域博主 本文作者: 大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于 《C语言》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造,将C语言基础知识一网打尽,希望可

    2024年02月08日
    浏览(34)
  • 使用 Jetpack Compose 实现一个计算器APP

    在上一篇文章中,我们说到打算使用 compose 实现一个计算器 APP,最开始打算做一个经典的 LCD 基础计算器,后来觉得好像没啥特色,最终决定还是改成仿微软计算器。 不过,微软计算器的功能太多了,仿制的工程量不小,所以我打算只仿我认为最核心的两个模式:标准模式和

    2024年02月05日
    浏览(54)
  • HTML和JavaScript实现一个简单的计算器

    使用HTML和JavaScript实现一个简单的计算器。 这段代码会在浏览器中创建一个标题为\\\"Simple Calculator\\\"的页面。页面顶部有一个 h1 元素,用于显示标题。计算器界面使用了CSS网格布局,将按钮排列为4列。 在JavaScript部分,定义了一些函数来处理计算器的操作。 appendCharacter() 函数用

    2024年02月13日
    浏览(36)
  • Android Studio简易计算器

    目录 第一步,创建新项目 第二步,设计UI 第三步,实现计算逻辑 第四步,测试应用程序 随着移动互联网的普及,手机应用程序已经成为人们生活中不可或缺的一部分。计算器是一类被广泛使用的应用程序之一,因此学习如何开发一款简易的计算器应用程序是学习Android Stu

    2024年02月08日
    浏览(29)
  • 【Android Studio】简易计算器

    简易计算器要求: 1,操作简单,易于掌握,界面简单。 2.方便进行加,减,乘,除等操作。数字保留小数点后两位。 3.包含小数点运算和输入回退功能。 4.能够进行多次叠加运算。 5.系统能够进行多次叠加运算。 6.系统可以稳定运行。 功能图如下: 逻辑流程图如下: 项目建

    2024年02月08日
    浏览(35)
  • Android Studio实现简易计算器(带横竖屏,深色浅色模式,更该按钮颜色,selector,style的使用)

    目录 前言 运行结果: 运行截屏(p50e)  apk文件 源码文件  项目结构 总览 MainActivity.java drawable 更改图标的方法: blackbutton.xml bluebuttons.xml greybutton.xml orangebuttons.xml whitebutton.xml layout 布局文件  竖屏: 横屏: values         colors.xml strings.xml styles 浅色模式 深色模式 themes.xml

    2024年02月06日
    浏览(37)
  • 制作一个简易的计算器app

    github项目地址:https://github.com/13008451162/AndroidMoblieCalculator 笔者的Ui制作的制作的比较麻烦仅供参考,在这里使用了多个LinearLayout对屏幕进行了划分。不建议大家这样做最好使用GridLayout会更加快捷简单 笔者大致划分是这样的: 使用了四个大框,在第四个大框里面有多个小框

    2024年02月15日
    浏览(36)
  • tkinter制作一个简单计算器

            我们知道tkinter是python常用的UI框架,那么它是如何使用的呢?我们用一个简单的例子来显示它的作用,制作一个简单的计算器,如下图所示。 上图是一个计算器,我们可以看出它一共有20个键,每个按键都表示一个功能,在最上方是一个文本框用来显示数值。接下

    2024年02月11日
    浏览(47)
  • 学会使用Android Studio网格布局制作计算器界面

    1.1GridLayout布局使用虚细线将布局划分为行、列和单元格,也支持一个控件在行、列上都有交错排列。 1.2可以自己设置布局中组件的排列方式 1.3可以自定义网格布局有多少行、多少列 1.4可以直接设置组件位于某行某列 1.5可以设置组件横跨几行或者几列 基于-  Empty Activity 模板

    2024年02月08日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包