初学编程 第一个小程序Android studio实现计算器功能

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

源代码下载:https://gitee.com/zha-yingying/calculator.git

1.建立一个新的Layout,我这里使用的是GridLayout(网格布局),提取屏幕宽度(方便后面设置子控件的宽度)GridLayout的特点是自定义网格布局有几行几列,我们可以将自控件自定义放在第几行第几列。

2.建立一个新的textview(文本框)作为我们计算器输入数字运算符号的界面,将textview放在第一行第一列,设置宽度为屏幕的宽度,这边我们需要提取一下屏幕的宽度。

3.添加子控件 添加按钮到布局上(数字+运算符号+等于符号)分别设置它们的位置,我这里的GridLayout设置的是八行四列,宽度为屏幕宽度的四分之一。

4.给每个控件都加上点击事件,给按钮设置监听器。在MainaActivity中使用enum(枚举)方法,分为四种情况(1)无按钮操作(2)上一次按钮为数字(3)上一次按钮为运算符号(4)上一次按钮为等于,分别写出其操作内容,需要在点击事件中添加状态。

提取屏幕宽度:

WindowManager wm = (WindowManager) this.getSystemService(this.WINDOW_SERVICE);

int width = wm.getDefaultDisplay().getWidth();

添加按钮:

(1)添加数字按钮(依次添加0-9和"."按钮)

Button button1 = new Button(this);
layout1.addView(button1);
GridLayout.LayoutParams bt1 = (GridLayout.LayoutParams) button1.getLayoutParams();
bt1.rowSpec = GridLayout.spec(6,1,GridLayout.CENTER,1);
bt1.columnSpec = GridLayout.spec(0,1,GridLayout.CENTER,1);
bt1.width = width/4;
button1.setText("1");
button1.setLayoutParams(bt1);

(2)添加运算符号按钮(加减乘除这一类)

减号为例:
Button buttonminus = new Button(this);
layout1.addView(buttonminus);
buttonminus.setText("-");
GridLayout.LayoutParams btjian = (GridLayout.LayoutParams) buttonminus.getLayoutParams();
btjian.rowSpec = GridLayout.spec(6, 1, GridLayout.CENTER, 1);
btjian.columnSpec = GridLayout.spec(3, 1, GridLayout.CENTER, 1);
btjian.width = width / 4;
buttonminus.setLayoutParams(btjian);

(3)添加等号按钮

Button buttonequal = new Button(this);
layout1.addView(buttonequal);
buttonequal.setText("=");
GridLayout.LayoutParams btdy = (GridLayout.LayoutParams) buttonequal.getLayoutParams();
btdy.rowSpec = GridLayout.spec(7, 1, GridLayout.CENTER, 1);
btdy.columnSpec = GridLayout.spec(3, 1, GridLayout.CENTER, 1);
btdy.width = width / 4;
buttonequal.setLayoutParams(btdy);

给按钮添加点击事件,设置状态:

(1)数字按钮

button1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        NumberClick("1");
         
    }
});

(2)运算符号按钮(减号为例子)

buttonminus.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        OperationClick("-");
        operationType = OperationType.Minus;
    }
});

(3)等号按钮

buttonequal.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            EqualClick("=");
        }
    });
}

枚举法举例

新建两个enum的类

ClickType判断上一次按钮是数字/运算符号/等于符号

public enum ClickType {
    None,
    Number,
    Operation,
    Equqal,
}

OperationType判断上一次的运算符号是加/减/乘/除

public enum OperationType {
    None,
    Plus,
    Minus,
    Multiply,
    Divide,

}

在MainActivity里:

private ClickType clickType = ClickType.None;
private OperationType operationType = OperationType.None;

//按下数字键时

private void NumberClick(String n){
    switch (clickType){
        case None:
            textView.setText(n);
            break;
        case Number:
            String an = textView.getText().toString();
            textView.setText(an+n);
            break;
        case Operation:
            textView.setText(n);
            break;
        case Equqal:
            textView.setText(n);
            break;
    }
    clickType = ClickType.Number;
}

//按下操作符号时

private  void OperationClick(String n1){
    switch ((clickType)){
        case None:
            textView.setText("mistake");
            break;

            case Number:
          
switch ((operationType)){

        case None:
            String an2 = textView.getText().toString();
            a = Double.valueOf(an2);
            textView.setText(an2+n1);
            break;

        case Plus:
            String an3 = textView.getText().toString();
            b = Double.valueOf(an3);
            a = a + b;
            textView.setText(an3+n1);
            textView.setText(""+a);
            break;
 case Minus:
                String an4 = textView.getText().toString();
                b = Double.valueOf(an4);
                a = a - b;
                textView.setText(an4+"-");
                textView.setText(""+a);
                break;

            case Divide:
                String an5 = textView.getText().toString();
                b = Double.valueOf(an5);
                a = a / b;
                textView.setText(an5+n1);
                textView.setText(""+a);
                break;

            case Multiply:
                String an6 = textView.getText().toString();
                b = Double.valueOf(an6);
                a = a * b;
                textView.setText(an6+n1);
                textView.setText(""+a);
                break;
        }
        break;
case  Operation:
    textView.setText("mistake");
    break;
case Equqal:
            String an1 = textView.getText().toString();
            a = Double.valueOf(an1);
            break;
    }
    clickType = ClickType.Operation;
}

//按下等于号时文章来源地址https://www.toymoban.com/news/detail-412734.html

private void EqualClick(String n2){
    switch ((clickType)){
        case None:
            textView.setText("mistake");
            break;
        case Number:

            switch ((operationType)){
                case None:
                    textView.setText(""+a);

                case Plus:
                    String bn = textView.getText().toString();
                    b = Double.valueOf(bn);
                    b = a + b;
                    textView.setText(""+b);
                    a = 0;
                    break;
 case  Minus:
                        String bn1 = textView.getText().toString();
                        b = Double.valueOf(bn1);
                        b = a - b;
                        textView.setText(""+b);
                        a = 0;
                        break;

                    case Multiply:
                        String bn2 = textView.getText().toString();
                        b = Double.valueOf(bn2);
                        b = a * b;
                        textView.setText(""+b);
                        a = 0;
                        break;

                    case Divide:
                        String bn3 = textView.getText().toString();
                        b = Double.valueOf(bn3);
                        b = a / b;
                        textView.setText(""+b);
                        a = 0;
                        break;
                }
                break;
            case Operation:
                textView.setText("mistake");
                break;
            case Equqal:
                textView.setText("mistake");
                break;
        }
        clickType = ClickType.Equqal;
    }

                    

到了这里,关于初学编程 第一个小程序Android studio实现计算器功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Android初学之android studio运行java/kotlin程序

    第一步骤: File — New — New Module ,然后弹出一个框,(左边)选择 Java or Kotlin Library ,(右边)编辑自己的图书馆名、包名、类名,选择 Java 一个语言,然后 Finish 如下图: 然后,就可以看见我新建的 java Library 了,如下图: 第二步骤:马上写个测试程序 看看能不能运行

    2024年02月11日
    浏览(55)
  • 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)
  • shell编程介绍以及实现简单的计算器小程序

    Linux 操作系统在服务器端和移动设备领域占有极为重要的地位,在 Linux 中,Shell 编程语言是一种基于命令行的脚本语言,也是系统管理员和开发人员常用的一种脚本语言。本篇博客将介绍 Linux 下的 Shell 编程,同时通过一个计算器程序的示例来演示 Shell 编程的基本语法和用法

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

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

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

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

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

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

    2024年02月08日
    浏览(45)
  • 手把手教python打包exe,打包一个简易的小程序。tkinter,python初学者。编程初学者作业:用*填充出自己的名字

    【声明】这篇文章可能写的很差,作者技术不够。但是一定原创,一定用最简单的语言,最详细的描述让没有经验的读者能够懂得 【首言】exe是电脑上直接点击就可以使用的。当你写了一个.py文件,可以实现你的有趣功能,于是你高兴的把这个发送给你的朋友,但是你的朋友

    2024年02月01日
    浏览(51)
  • 移动应用开发实验一Android studio设计三种计算器的UI

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

    2024年02月11日
    浏览(58)
  • Android开发:基于Kotlin编写一个简易计算器

    本着程序员“拥抱变化”的思想,最近开始学Kotlin了。感觉还是得通过实战来入门一门新语言,所以打算写一个基于Kotlin语言的计算器,本文对开发过程以及学习Kotlin的一些知识进行了记录。 计算器的全部源码已经放到了我的Github中,需要的伙伴自取:Calculator Kotlin中文站:

    2023年04月27日
    浏览(59)
  • android studio虚拟机中一个程序模拟udp通信

    分别在两个方法中创建两个线程,一个作为服务器进行监听,一个作为客户端进行数据发送。

    2024年02月07日
    浏览(32)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包