AndroidStudio案例——简单计算器

这篇具有很好参考价值的文章主要介绍了AndroidStudio案例——简单计算器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

效果展示

android studio计算器,Android,android,android studio,ide

实验内容及步骤 

            设计一款带有可视化界面的简单计算器,供用户输入数据并查看结果。用户通过点击相应按钮(加减乘除运算符、等号、数字)输入正确的表达式,计算器进行相应的加减乘除运算,且可以进行小数和整数的运算;长按清除按钮3秒,可以清除已录入的内容。

步骤:

  • Layout文件夹中建立布局文件activity_main.xml,完成计算器界面的网格布局设计,包括了一个文本编辑框和17个按钮。
  • 为每一个按钮编写单击事件,实现对应功能;点击数字和加减乘除按钮实现表达式的录入,并显示在TextView中;点击等号按钮,根据表达式计算结果;长按清除按钮3秒以上,清除录入的表达式

代码

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical"
    android:padding="10dp">

    <EditText
        android:id="@+id/result"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:layout_marginLeft="4dp"
        android:paddingLeft="10dp"
        android:textSize="30dp"
        android:textColor="@color/colorPrimary"
        android:enabled="false"
        />
    <GridLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:rowCount="5"
        android:columnCount="4"

        >
        <Button
            android:id="@+id/cls"
            android:layout_width="match_parent"
            android:layout_height="60dp"
            android:text="清除"
            android:textSize="20dp"
            android:textColor="@color/black"
            android:layout_columnSpan="4"
            android:background="@drawable/btn"
            />
        <Button
            android:id="@+id/one"
            android:layout_width="wrap_content"
            android:layout_height="60dp"
            android:text="1"
            android:textSize="20dp"
            android:layout_columnWeight="1"
            android:background="@drawable/btn"
            />
        <Button
            android:id="@+id/two"
            android:layout_width="wrap_content"
            android:layout_height="60dp"
            android:text="2"
            android:textSize="20dp"
            android:layout_columnWeight="1"
            android:background="@drawable/btn"
            />
        <Button
            android:id="@+id/three"
            android:layout_width="wrap_content"
            android:layout_height="60dp"
            android:text="3"
            android:textSize="20dp"
            android:layout_columnWeight="1"
            android:background="@drawable/btn"
            />
        <Button
            android:id="@+id/plus"
            android:layout_width="wrap_content"
            android:layout_height="60dp"
            android:text="+"
            android:textSize="20dp"
            android:layout_columnWeight="1"
            android:background="@drawable/btn"
            />
        <Button
            android:id="@+id/four"
            android:layout_width="wrap_content"
            android:layout_height="60dp"
            android:text="4"
            android:textSize="20dp"
            android:layout_columnWeight="1"
            android:background="@drawable/btn"
            />
        <Button
            android:id="@+id/five"
            android:layout_width="wrap_content"
            android:layout_height="60dp"
            android:text="5"
            android:textSize="20dp"
            android:layout_columnWeight="1"
            android:background="@drawable/btn"
            />
        <Button
            android:id="@+id/six"
            android:layout_width="wrap_content"
            android:layout_height="60dp"
            android:text="6"
            android:textSize="20dp"
            android:layout_columnWeight="1"
            android:background="@drawable/btn"
            />
        <Button
            android:id="@+id/min"
            android:layout_width="wrap_content"
            android:layout_height="60dp"
            android:text="-"
            android:textSize="20dp"
            android:layout_columnWeight="1"
            android:background="@drawable/btn"
            />
        <Button
            android:id="@+id/seven"
            android:layout_width="wrap_content"
            android:layout_height="60dp"
            android:text="7"
            android:textSize="20dp"
            android:layout_columnWeight="1"
            android:background="@drawable/btn"
            />
        <Button
            android:id="@+id/eight"
            android:layout_width="wrap_content"
            android:layout_height="60dp"
            android:text="8"
            android:textSize="20dp"
            android:layout_columnWeight="1"
            android:background="@drawable/btn"
            />
        <Button
            android:id="@+id/nine"
            android:layout_width="wrap_content"
            android:layout_height="60dp"
            android:text="9"
            android:textSize="20dp"
            android:layout_columnWeight="1"
            android:background="@drawable/btn"
            />
        <Button
            android:id="@+id/mul"
            android:layout_width="wrap_content"
            android:layout_height="60dp"
            android:text="×"
            android:textSize="20dp"
            android:layout_columnWeight="1"
            android:background="@drawable/btn"
            />
        <Button
            android:id="@+id/spot"
            android:layout_width="wrap_content"
            android:layout_height="60dp"
            android:text="."
            android:textSize="20dp"
            android:layout_columnWeight="1"
            android:background="@drawable/btn"
            />
        <Button
            android:id="@+id/zero"
            android:layout_width="wrap_content"
            android:layout_height="60dp"
            android:text="0"
            android:textSize="20dp"
            android:layout_columnWeight="1"
            android:background="@drawable/btn"
            />
        <Button
            android:id="@+id/equal"
            android:layout_width="wrap_content"
            android:layout_height="60dp"
            android:text="="
            android:textSize="20dp"
            android:layout_columnWeight="1"
            android:background="@drawable/btn"
            />
        <Button
            android:id="@+id/div"
            android:layout_width="wrap_content"
            android:layout_height="60dp"
            android:text="÷"
            android:textSize="20dp"
            android:layout_columnWeight="1"
            android:background="@drawable/btn"
            />
    </GridLayout>

</LinearLayout>

btn.xml(按钮的样式)

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

btn_pink.xml(按钮点击前)

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

</shape>

btn_pink_bg.xml(按钮点击后)

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

</shape>

效果如下

android studio计算器,Android,android,android studio,ide

JAVA代码部分

MainActivity.java

package com.example.a1108;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

import java.util.Date;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{
    EditText result;
//    定义数字按钮
    Button zero,one,two,three,four,five,six,seven,eight,nine,spot;
//    定义加减乘除按钮
    Button plus,min,mul,div;
//    定义等号按钮
    Button equals;
//    标识符,标识运算完成
    Boolean clr_flag=false;
//    清除按钮
    Button cls;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        result=(EditText) findViewById(R.id.result);

        zero=findViewById(R.id.zero);
        one=findViewById(R.id.one);
        two=findViewById(R.id.two);
        three=findViewById(R.id.three);
        four=findViewById(R.id.four);
        five=findViewById(R.id.five);
        six=findViewById(R.id.six);
        seven=findViewById(R.id.seven);
        eight=findViewById(R.id.eight);
        nine=findViewById(R.id.nine);
        spot=findViewById(R.id.spot);

        zero.setOnClickListener(this);
        one.setOnClickListener(this);
        two.setOnClickListener(this);
        three.setOnClickListener(this);
        four.setOnClickListener(this);
        five.setOnClickListener(this);
        six.setOnClickListener(this);
        seven.setOnClickListener(this);
        eight.setOnClickListener(this);
        nine.setOnClickListener(this);
        spot.setOnClickListener(this);

        plus=findViewById(R.id.plus);
        min=findViewById(R.id.min);
        mul=findViewById(R.id.mul);
        div=findViewById(R.id.div);

        plus.setOnClickListener(this);
        min.setOnClickListener(this);
        mul.setOnClickListener(this);
        div.setOnClickListener(this);

        equals=findViewById(R.id.equal);

        equals.setOnClickListener(this);

        cls=findViewById(R.id.cls);
//        为清除设置事件
        cls.setOnTouchListener(new View.OnTouchListener() {
            Date curDate=new Date(System.currentTimeMillis());
            Date endDate=new Date(System.currentTimeMillis());
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                switch (motionEvent.getAction()){
//                    按下
                    case MotionEvent.ACTION_DOWN:
                        curDate=new Date((System.currentTimeMillis()));
                        break;
//                    抬起
                    case MotionEvent.ACTION_UP:
                        endDate=new Date(System.currentTimeMillis());
                        long durationMS=endDate.getTime()-curDate.getTime();
                        if(durationMS>3000)
                            result.setText("");
                        break;
                }
                return true;
            }
        });
    }



    @Override
    public void onClick(View view) {
//        getText()获取的内容是一个对象,所以要转换一下
        String str=result.getText().toString();
//        根据当前按钮按下的id进行判断
        switch (view.getId())
        {
            case R.id.zero:
            case R.id.one:
            case R.id.two:
            case R.id.three:
            case R.id.four:
            case R.id.five:
            case R.id.six:
            case R.id.seven:
            case R.id.eight:
            case R.id.nine:
            case R.id.spot:
//                如果标识符为真,让值为空
                if(clr_flag)
                    str="";
//                把现在的内容追加上,现在的内容来自于按钮的文本
//                按钮这个view对象先转换为Button
                result.setText(str+((Button)view).getText());
                clr_flag=false;
                break;
            case R.id.plus:
            case R.id.min:
            case R.id.mul:
            case R.id.div:
//                如果标识符为真,让值为空
                if(clr_flag)
                    str="";
                if(str.contains("+")||str.contains("-")||str.contains("×")||str.contains("÷"))
//                    从起始位置开始,我们只要运算符之前的内容
                    str=str.substring(0,str.indexOf(" "));
//                所以在运算符的前面和后面都追加一个“ ”
                result.setText(str+" "+((Button)view).getText()+" ");
                clr_flag=false;
                break;
            case R.id.equal:
                getResult();
                break;
        }
    }
//    点了等号后
    private void getResult(){
        clr_flag=true;
//        获取到字符串
        String exp=result.getText().toString();
//        按照空格分隔字符串,形成字符串数组,第一个元素是左侧操作数,第二个元素是运算符,第三个元素是右侧操作数
        String [] exp_arr=exp.split(" ");
//        定义结果
        double cnt=0;
//        定义操作数
        double d1=Double.parseDouble(exp_arr[0]);
        double d2=Double.parseDouble(exp_arr[2]);
//        判断运算符
        if(exp_arr[1].equals("+"))
            cnt=d1+d2;
        else if(exp_arr[1].equals("-"))
            cnt=d1-d2;
        else if(exp_arr[1].equals("×"))
            cnt=d1*d2;
        else if(exp_arr[1].equals("÷"))
            cnt=d1/d2;
//        设置结果
        result.setText(String.valueOf(cnt));
    }
}

 注释都写在里面了文章来源地址https://www.toymoban.com/news/detail-783619.html

到了这里,关于AndroidStudio案例——简单计算器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Android Studio简易计算器

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

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

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

    2024年02月08日
    浏览(44)
  • PyQt6案例3:简单计算器案例

    1、打开QTdesigner 2、选择Dialog without Buttons,并单击“创建”按钮。 3、添加控件。 (1)拖拽“Label”控件,在文本属性中添加文字“请输入第一个数字:”;在Label水平位置拖拽一个“Line Edit”控件。 (2)拖拽“Label”控件,在文本属性中添加文字“请输入第二个额数字:”

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

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

    2024年02月08日
    浏览(46)
  • Android 实战项目:简单计算器

    虽然只学了一些Android的简单控件,但是只要活学善用这些布局和控件,也能够做出实用的App。 接下来让我们尝试设计并实现一个简单计算器。 Windows计算器,它主要由上半部分的计算结果与下半部分的计算按钮两块区域组成,据此可创建一个界面相似的计算器App,同样由计算

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

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

    2023年04月14日
    浏览(68)
  • 移动应用开发实验一Android studio设计三种计算器的UI

    使用必要的布局方式,设计下面三种计算器的界面: 简单的计算器 科学计算器 程序计算器 边框的设置是建立一个drawable的xml文件,然后写了边框宽度、颜色、圆角和内边距。调用的时候用到了background属性 。

    2024年02月11日
    浏览(59)
  • 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日
    浏览(44)
  • 微信小程序案例——计算器

    1、创建项目 按照惯例,做一些初始化工作 2、设置导航栏 在 app.json 文件设置 window 配置项 pages/index/index.wxml 文件 1、编写页面整体结构 2、编写结果区域结构 两行内容:第一行是当前的计算式,第二行是当前计算结果 3、编写按钮区域第一行按钮的结构 第一行包含四个按钮:

    2024年04月11日
    浏览(41)
  • 【微信小程序】计算器案例

    🏆今日学习目标:第二十一期——计算器案例 ✨个人主页:颜颜yan_的个人主页 ⏰预计时间:30分钟 🎉专栏系列:我的第一个微信小程序 嗨嗨嗨,好久没更新小程序专栏了,本期浅浅用小程序写一个计算器。 最终代码会上传至资源噢~ 新建一个项目,在app.json中配置文件导

    2024年01月17日
    浏览(56)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包