移动开发作业三:使用Android studio来实现简单的计算器

这篇具有很好参考价值的文章主要介绍了移动开发作业三:使用Android studio来实现简单的计算器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.实验要求

结合所学内容利用Android studio来设计一个开发实例,这里去我选择做一个简易的计算器,可以初步实现加减乘除。

二.实验功能

该计算器与我们平常手机上的计算器一样,可以进行加减乘除操作。

三.实验过程

1.首先是关于计算器的布局

在layout文件下的drawable文件中新建四个xml文件:

button_bg.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <!-- 背景色 -->
    <solid android:color="#FFB400"/>
    <corners
        android:radius="5dp"/>
</shape>

这是一个用于定义 Android 形状的 XML 文件。这个文件定义了一个背景色为黄色(#FFB400)的形状,并设置了圆角半径为5dp。

gray.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <corners
        android:radius="5dp"/>
    <solid
        android:color="#ffDEDEDE"/>
</shape>

这是一个用于定义 Android 形状的 XML 文件。这个文件定义了一个背景色为灰色(#ffDEDEDE)的形状,并设置了圆角半径为5dp。

white.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <corners
        android:radius="5dp"/>
    <solid
        android:color="#ffffffff"/>
</shape>

这是一个用于定义 Android 形状的 XML 文件。这个文件定义了一个背景色为白色(#ffffffff)的形状,并设置了圆角半径为5dp。

selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:drawable="@drawable/gray"
        android:state_pressed="true"/>
    <item android:drawable="@drawable/white"/>
</selector>

这是一个用于定义状态选择器的 XML 文件。在这个文件中,当控件处于被按下的状态时(state_pressed=true),会显示gray.xml所定义的样式,否则显示white.xml所定义的样式。

然后就是关于activity_main.xml文件的设计,由于代码较多在这里只展示一部分,具体代码放在源码链接。

<EditText
        android:id="@+id/et_input"
        android:layout_width="match_parent"
        android:layout_height="80dp"
        android:background="@drawable/white"
        android:editable="false"
        android:paddingBottom="5dp"
        android:textSize="30sp" />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp"
        android:orientation="horizontal"
        android:gravity="center_horizontal">

        <Button
            android:id="@+id/btn_clr"
            android:layout_width="80dp"
            android:layout_height="80dp"
            android:text="C"
            android:textSize="30sp"
            android:paddingRight="15sp"
            android:paddingBottom="15sp"
            android:background="@drawable/selector"/>

        <Button
            android:id="@+id/btn_del"
            android:layout_width="80dp"
            android:layout_height="80dp"
            android:text="⬅"
            android:textSize="30sp"
            android:layout_marginLeft="10dp"
            android:paddingRight="15sp"
            android:paddingBottom="15sp"
            android:background="@drawable/selector"/>

        <Button
            android:id="@+id/btn_div"
            android:layout_width="80dp"
            android:layout_height="80dp"
            android:text="÷"
            android:textSize="30sp"
            android:layout_marginLeft="10dp"
            android:paddingRight="15sp"
            android:paddingBottom="15sp"
            android:background="@drawable/selector"/>

        <Button
            android:id="@+id/btn_mul"
            android:layout_width="80dp"
            android:layout_height="80dp"
            android:text="×"
            android:textSize="30sp"
            android:layout_marginLeft="10dp"
            android:paddingRight="15sp"
            android:paddingBottom="15sp"
            android:background="@drawable/selector"/>
    </LinearLayout>

2.关于MainActivity

在onCreate方法中,我们首先通过findViewById方法获取到布局中定义的各个按钮和文本框的引用,并为它们设置点击事件监听器(this),这里我只显示一部分因为内容大致一样。

btn_0 = findViewById(R.id.btn_0);
btn_1 = findViewById(R.id.btn_1);
btn_2 = findViewById(R.id.btn_2);
btn_0.setOnClickListener(this);
btn_1.setOnClickListener(this);
btn_2.setOnClickListener(this);

在onClick方法中,我们根据点击的按钮的id进行不同的处理:

  • 如果点击的按钮是数字或小数点按钮,则将相应的字符追加到当前输入的字符串后面,并更新显示在文本框中。
  • 如果点击的按钮是加、减、乘、除按钮,则在当前输入的字符串后面添加一个空格和相应的运算符,并更新显示在文本框中。
  • 如果点击的按钮是清除按钮,则清空当前输入的字符串,并清空文本框的显示。
  • 如果点击的按钮是删除按钮,则删除当前输入字符串的最后一个字符,并更新显示在文本框中。
  • 如果点击的按钮是等号按钮,则调用getResult方法进行计算,并将结果显示在文本框中。
  @Override
    public void onClick(View v) {
        String str = et_input.getText().toString();

        if (v.getId() == R.id.btn_0 || v.getId() == R.id.btn_1 || v.getId() == R.id.btn_2 ||
                v.getId() == R.id.btn_3 || v.getId() == R.id.btn_4 || v.getId() == R.id.btn_5 ||
                v.getId() == R.id.btn_6 || v.getId() == R.id.btn_7 || v.getId() == R.id.btn_8 ||
                v.getId() == R.id.btn_9 || v.getId() == R.id.btn_pt) {

            // 处理数字和小数点按钮的点击事件
            if (clr_flag) {
                clr_flag = false;
                str = "";
                et_input.setText("");
            }
            et_input.setText(str + ((Button) v).getText());

        } else if (v.getId() == R.id.btn_add || v.getId() == R.id.btn_sub ||
                v.getId() == R.id.btn_mul || v.getId() == R.id.btn_div) {

            // 处理运算符按钮的点击事件
            if (clr_flag) {
                clr_flag = false;
                str = "";
                et_input.setText("");
            }
            if (str.contains("+") || str.contains("-") || str.contains("×") || str.contains("÷")) {
                str = str.substring(0, str.indexOf(" "));
            }
            et_input.setText(str + " " + ((Button) v).getText() + " ");

        } else if (v.getId() == R.id.btn_clr) {

            // 处理清除按钮的点击事件
            if (clr_flag)
                clr_flag = false;
            str = "";
            et_input.setText("");

        } else if (v.getId() == R.id.btn_del) {

            // 处理删除按钮的点击事件
            if (clr_flag) {
                clr_flag = false;
                str = "";
                et_input.setText("");
            } else if (str != null && !str.equals("")) {
                et_input.setText(str.substring(0, str.length() - 1));
            }

        } else if (v.getId() == R.id.btn_eq) {

            // 处理等号按钮的点击事件
            getResult();
        }
    }

当输入数据之后就需要输出结果了,这里定义了getResult方法来输出结果。getResult方法用于计算当前输入的表达式,并将结果显示在文本框中。它首先判断表达式中是否包含运算符,如果不包含则直接返回。然后根据运算符的类型进行相应的运算,并将结果显示在文本框中。

 private void getResult() {
        String exp=et_input.getText().toString();
        if(exp==null||exp.equals("")) return ;
        //因为没有运算符所以不用运算
        if(!exp.contains(" ")){
            return ;
        }
        if(clr_flag){
            clr_flag=false;
            return;
        }
        clr_flag=true;
        //截取运算符前面的字符串
        String s1=exp.substring(0,exp.indexOf(" "));
        //截取的运算符
        String op=exp.substring(exp.indexOf(" ")+1,exp.indexOf(" ")+2);
        //截取运算符后面的字符串
        String s2=exp.substring(exp.indexOf(" ")+3);
        double cnt=0;
        if(!s1.equals("")&&!s2.equals("")){
            double d1=Double.parseDouble(s1);
            double d2=Double.parseDouble(s2);
            if(op.equals("+")){
                cnt=d1+d2;
            }
            if(op.equals("-")){
                cnt=d1-d2;
            }
            if(op.equals("×")){
                cnt=d1*d2;
            }
            if(op.equals("÷")){
                if(d2==0) cnt=0;
                else cnt=d1/d2;
            }
            if(!s1.contains(".")&&!s2.contains(".")&&!op.equals("÷")) {
                int res = (int) cnt;
                et_input.setText(res+"");
            }else {
                et_input.setText(cnt+"");}
        }
        //如果s1是空    s2不是空  就执行下一步
        else if(!s1.equals("")&&s2.equals("")){
            double d1=Double.parseDouble(s1);
            if(op.equals("+")){
                cnt=d1;
            }
            if(op.equals("-")){
                cnt=d1;
            }
            if(op.equals("×")){
                cnt=0;
            }
            if(op.equals("÷")){
                cnt=0;
            }
            if(!s1.contains(".")) {
                int res = (int) cnt;
                et_input.setText(res+"");
            }else {
                et_input.setText(cnt+"");}
        }
        //如果s1是空    s2不是空  就执行下一步
        else if(s1.equals("")&&!s2.equals("")){
            double d2=Double.parseDouble(s2);
            if(op.equals("+")){
                cnt=d2;
            }
            if(op.equals("-")){
                cnt=0-d2;
            }
            if(op.equals("×")){
                cnt=0;
            }
            if(op.equals("÷")){
                cnt=0;
            }
            if(!s2.contains(".")) {
                int res = (int) cnt;
                et_input.setText(res+"");
            }else {
                et_input.setText(cnt+"");}
        }
        else {
            et_input.setText("");
        }
    }

结果如下:

android studio 加减乘除计算机,android studio,android,ide

加法:android studio 加减乘除计算机,android studio,android,ide android studio 加减乘除计算机,android studio,android,ide

减法:android studio 加减乘除计算机,android studio,android,ideandroid studio 加减乘除计算机,android studio,android,idec

乘法:android studio 加减乘除计算机,android studio,android,ideandroid studio 加减乘除计算机,android studio,android,ide

除法:android studio 加减乘除计算机,android studio,android,ideandroid studio 加减乘除计算机,android studio,android,ide

四.实验总结

这次内容具体包括:通过一个启动Activity布置4个按钮,每个按钮分别触发加、减、乘、除的Activity;然后在打开的Activity中实现与实验一类似的页面,以一个按钮触发计算输出。但是在这次实验中我首先用的是switch case语句来记录用户所点击的按钮。但是所有的case语句都报错了,经过查看资料发现问题是由于switch语句的case标签不是常量表达式引起的。在Java中,case标签必须是一个常量表达式,例如整数或字符常量,枚举常量等。如果case语句包含变量或函数调用等非常量表达式,则会引发"Constant expression required"错误。于是我将switch语句替换成了if语句,结果顺利进行。
 

五.代码仓库

xushijie/移动开发计算器文章来源地址https://www.toymoban.com/news/detail-781197.html

到了这里,关于移动开发作业三:使用Android studio来实现简单的计算器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【移动开发学习】 Android Studio 编写一个简单的微信界面

    Android Studio简单还原微信ui 目标 实现3-4个tab的切换效果 技术需求 activity, xml, fragment, recyclerview 成果展示 其中联系人界面通过recyclerview实现了可以滑动列表           仓库地址 https://github.com/SmileEX/wecaht.git 实现过程 主要ui 第一步我们首先把微信的ui主体做出来,即这三个部分

    2024年02月08日
    浏览(65)
  • 【移动开发学习】 Android Studio 编写一个简单的微信界面 (2)

    Android Studio简单还原微信ui 上一期完成内容(前情提要) 上次我们简单地实现了微信的几个初始界面,并且在联系人页面通过recycleview添加了许多的view 目标 建立在上次的基础上,我们来扩展联系人界面的功能,给每一个view添加一个点击功能,让其可以跳转到另一个activity,

    2024年02月05日
    浏览(63)
  • Android Studio制作一个简单的计算器APP

    虽然现在我们日常生活中很少用到计算器,但是第一次尝试在Android Studio上做一个计算器 程序设计步骤: (1)在布局文件中声明编辑文件框EditText,按钮Button等组件。 (2)在MainActivity中获取组件实例。 (3)通过swtich函数,判断输入的内容,并进行相应操作,通过getText()获

    2024年02月11日
    浏览(49)
  • 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日
    浏览(43)
  • 安卓大作业:使用Android Studio开发天气预报APP(使用sqlite数据库)

    今天我来分享一下如何使用Android Studio开发一个天气预报APP。在文中,我们将使用第三方接口获取实时天气数据,并显示在APP界面上。 首先,打开Android Studio并创建一个新的项目。在创建新项目时,我们需要设置项目名称、包名和支持的最低API级别。 为了获取实时天气数据,

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

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

    2024年02月08日
    浏览(45)
  • 初学编程 第一个小程序Android studio实现计算器功能

    源代码下载:https://gitee.com/zha-yingying/calculator.git 1.建立一个新的Layout,我这里使用的是GridLayout(网格布局),提取屏幕宽度(方便后面设置子控件的宽度)GridLayout的特点是自定义网格布局有几行几列,我们可以将自控件自定义放在第几行第几列。 2.建立一个新的textview(文本

    2023年04月14日
    浏览(67)
  • Android Studio App开发实战项目之实现淘宝电商App首页界面(附源码,可用于大作业参考)

    需要源码和图片集请点赞关注收藏后评论区留言或者私信~~~ 各家电商的App首页都是动感十足,页面元素丰富令人眼花缭乱,其中运用了Android的多种组合控件,可以说是App界面开发的集大成之作,下面我们也动手实现一个。 本次项目主要模仿淘宝App采用的技术,所以有底部标

    2024年02月03日
    浏览(80)
  • 移动应用开发环境搭建Android Studio

    记得提前开启电脑虚拟化支持,具体方法可自行百度 查看是否启用虚拟化 JDK安装与卸载 由于Andriod开发使用的语言是javaKotlin,这里使用的是java语言所以需要先安装java的开发环境 所有开发 Android 应用程序需要的工具都是开源的,并且可以从互联网上下载 Android Studio 是谷歌推

    2023年04月08日
    浏览(71)
  • Android开发:kotlin语言实现简易计算器

    输入两个数字,可选加减乘除操作符,并计算显示对应结果 随系统切换语言 可对结果进行四舍五入操作 界面布局:activity_main.xml文件代码 字符定义:string.xml文件代码 逻辑实现:MainActivity.kt 文件代码 方法一(偷懒): 复制文件到对应位置 方法二: 1. 绘制界面 2. 编写逻辑

    2023年04月08日
    浏览(48)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包