Android开发之简易计算器

使用GridLayout对计算器按键进行布局,大致代码如下:

<?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"android:orientation="vertical"android:padding="5dp"tools:context=".MainActivity"><ScrollViewandroid:layout_width="match_parent"android:layout_height="wrap_content"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="计算器"android:gravity="center"android:textColor="@color/colorPrimaryDark"android:textSize="30sp"/><TextViewandroid:id="@+id/tv_result"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="#FFFF"android:text="0"android:textSize="25sp"android:lines="7"android:gravity="bottom|right"/><GridLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:columnCount="4"android:rowCount="5"><Buttonandroid:id="@+id/btn_cancel"android:width="0dp"android:height="@dimen/button_height_size"android:layout_columnWeight="1"android:gravity="center"android:text="C"android:textColor="@color/colorPrimaryDark"android:textSize="@dimen/button_font_size"/><Buttonandroid:id="@+id/btn_percentage"android:width="0dp"android:height="@dimen/button_height_size"android:layout_columnWeight="1"android:gravity="center"android:text="%"android:textColor="@color/colorPrimaryDark"android:textSize="@dimen/button_font_size"/><ImageButtonandroid:id="@+id/btn_backspace"android:width="0dp"android:layout_height="75dp"android:height="@dimen/button_height_size"android:layout_columnWeight="1"android:scaleType="centerInside"android:src="@drawable/backspace"/><Buttonandroid:id="@+id/btn_divider"android:width="0dp"android:height="@dimen/button_height_size"android:layout_columnWeight="1"android:gravity="center"android:text="/"android:textColor="@color/colorPrimaryDark"android:textSize="@dimen/button_font_size"/><Buttonandroid:id="@+id/btn_seven"android:width="0dp"android:height="@dimen/button_height_size"android:layout_columnWeight="1"android:gravity="center"android:text="7"android:textColor="@color/colorPrimaryDark"android:textSize="@dimen/button_font_size"/><Buttonandroid:id="@+id/btn_eight"android:width="0dp"android:height="@dimen/button_height_size"android:layout_columnWeight="1"android:gravity="center"android:text="8"android:textColor="@color/colorPrimaryDark"android:textSize="@dimen/button_font_size"/><Buttonandroid:id="@+id/btn_nine"android:width="0dp"android:height="@dimen/button_height_size"android:layout_columnWeight="1"android:gravity="center"android:text="9"android:textColor="@color/colorPrimaryDark"android:textSize="@dimen/button_font_size"/><Buttonandroid:id="@+id/btn_multiply"android:width="0dp"android:height="@dimen/button_height_size"android:layout_columnWeight="1"android:gravity="center"android:text="*"android:textColor="@color/colorPrimaryDark"android:textSize="@dimen/button_font_size"/><Buttonandroid:id="@+id/btn_four"android:width="0dp"android:height="@dimen/button_height_size"android:layout_columnWeight="1"android:gravity="center"android:text="4"android:textColor="@color/colorPrimaryDark"android:textSize="@dimen/button_font_size"/><Buttonandroid:id="@+id/btn_five"android:width="0dp"android:height="@dimen/button_height_size"android:layout_columnWeight="1"android:gravity="center"android:text="5"android:textColor="@color/colorPrimaryDark"android:textSize="@dimen/button_font_size"/><Buttonandroid:id="@+id/btn_six"android:width="0dp"android:height="@dimen/button_height_size"android:layout_columnWeight="1"android:gravity="center"android:text="6"android:textColor="@color/colorPrimaryDark"android:textSize="@dimen/button_font_size"/><Buttonandroid:id="@+id/btn_minus"android:width="0dp"android:height="@dimen/button_height_size"android:layout_columnWeight="1"android:gravity="center"android:text="-"android:textColor="@color/colorPrimaryDark"android:textSize="@dimen/button_font_size"/><Buttonandroid:id="@+id/btn_one"android:width="0dp"android:height="@dimen/button_height_size"android:layout_columnWeight="1"android:gravity="center"android:text="1"android:textColor="@color/colorPrimaryDark"android:textSize="@dimen/button_font_size"/><Buttonandroid:id="@+id/btn_two"android:width="0dp"android:height="@dimen/button_height_size"android:layout_columnWeight="1"android:gravity="center"android:text="2"android:textColor="@color/colorPrimaryDark"android:textSize="@dimen/button_font_size"/><Buttonandroid:id="@+id/btn_three"android:width="0dp"android:height="@dimen/button_height_size"android:layout_columnWeight="1"android:gravity="center"android:text="3"android:textColor="@color/colorPrimaryDark"android:textSize="@dimen/button_font_size"/><Buttonandroid:id="@+id/btn_plus"android:width="0dp"android:height="@dimen/button_height_size"android:layout_columnWeight="1"android:gravity="center"android:text="+"android:textColor="@color/colorPrimaryDark"android:textSize="@dimen/button_font_size"/><Buttonandroid:id="@+id/btn_doublezero"android:width="0dp"android:height="@dimen/button_height_size"android:layout_columnWeight="1"android:gravity="center"android:text="00"android:textColor="@color/colorPrimaryDark"android:textSize="@dimen/button_font_size"/><Buttonandroid:id="@+id/btn_zero"android:width="0dp"android:height="@dimen/button_height_size"android:layout_columnWeight="1"android:gravity="center"android:text="0"android:textColor="@color/colorPrimaryDark"android:textSize="@dimen/button_font_size"/><Buttonandroid:id="@+id/btn_point"android:width="0dp"android:height="@dimen/button_height_size"android:layout_columnWeight="1"android:gravity="center"android:text="."android:textColor="@color/colorPrimaryDark"android:textSize="@dimen/button_font_size"/><Buttonandroid:id="@+id/btn_equal"android:width="0dp"android:height="@dimen/button_height_size"android:layout_columnWeight="1"android:gravity="center"android:text="="android:textColor="@color/colorPrimaryDark"android:textSize="@dimen/button_font_size"/></GridLayout></LinearLayout></ScrollView></LinearLayout>

主要逻辑代码如下:

package com.njyd.calculatoractivity;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.view.View;
import android.widget.TextView;public class MainActivity extends AppCompatActivity implements View.OnClickListener {private TextView tv_result;//第一个操作数private String firstNum = "";//运算符private String operator = "";//第二个操作数private String secondNum = "";//当前的计算结果private String result = "";//显示的文本内容private String showText = "";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();}private void initView() {//获取布局文件中的组件tv_result = findViewById(R.id.tv_result);findViewById(R.id.btn_cancel).setOnClickListener(this);findViewById(R.id.btn_percentage).setOnClickListener(this);findViewById(R.id.btn_backspace).setOnClickListener(this);findViewById(R.id.btn_divider).setOnClickListener(this);findViewById(R.id.btn_seven).setOnClickListener(this);findViewById(R.id.btn_eight).setOnClickListener(this);findViewById(R.id.btn_nine).setOnClickListener(this);findViewById(R.id.btn_multiply).setOnClickListener(this);findViewById(R.id.btn_four).setOnClickListener(this);findViewById(R.id.btn_five).setOnClickListener(this);findViewById(R.id.btn_six).setOnClickListener(this);findViewById(R.id.btn_minus).setOnClickListener(this);findViewById(R.id.btn_one).setOnClickListener(this);findViewById(R.id.btn_two).setOnClickListener(this);findViewById(R.id.btn_three).setOnClickListener(this);findViewById(R.id.btn_plus).setOnClickListener(this);findViewById(R.id.btn_doublezero).setOnClickListener(this);findViewById(R.id.btn_zero).setOnClickListener(this);findViewById(R.id.btn_point).setOnClickListener(this);findViewById(R.id.btn_equal).setOnClickListener(this);}@Overridepublic void onClick(View v) {String inputText;if (v.getId() == R.id.btn_backspace){inputText = "X";}else{inputText = ((TextView) v).getText().toString();}switch (v.getId()) {//点击了退格按钮case R.id.btn_backspace:if (operator.equals("")) {firstNum = String.valueOf((int)(Double.parseDouble(firstNum) / 10));updateText(firstNum);}else if(secondNum ==""){operator = "";updateText(firstNum + operator + secondNum);}else {secondNum = String.valueOf((int)(Double.parseDouble(firstNum) / 10));updateText(firstNum + operator + secondNum);}break;//点击了清除按钮case R.id.btn_cancel:clear();break;//点击了加减乘除case R.id.btn_plus:case R.id.btn_minus:case R.id.btn_multiply:case R.id.btn_divider:operator = inputText;//运算符updateText(showText + operator);break;//点击了等号按钮case R.id.btn_equal://加减乘除四则运算double calculate_result = calculate();updateOperate(String.valueOf(calculate_result));updateText(showText + "=" + result);break;//点击了百分号按钮case R.id.btn_percentage:if (operator.equals("")) {firstNum = String.valueOf(Double.parseDouble(firstNum) * 0.01);updateText(firstNum);} else {//有运算符,则继续拼接第二个操作数secondNum = String.valueOf(Double.parseDouble(secondNum) * 0.01);updateText(firstNum + operator + secondNum);}break;//点击了其他按钮default://上次的运算结果已经出来了if (result.length() > 0 && operator.equals("")){clear();}//无运算符,则继续拼接第一个操作数if (operator.equals("")) {firstNum = firstNum + inputText;} else {//有运算符,则继续拼接第二个操作数secondNum = secondNum + inputText;}//整数前不需要0if (showText.equals("0") && !inputText.equals(".")){updateText(inputText);}else {updateText(showText + inputText);}break;}}private double calculate() {switch (operator){case "+":return Double.parseDouble(firstNum) + Double.parseDouble(secondNum);case "-":return Double.parseDouble(firstNum) - Double.parseDouble(secondNum);case "*":return Double.parseDouble(firstNum) * Double.parseDouble(secondNum);case "/":return Double.parseDouble(firstNum) / Double.parseDouble(secondNum);}return 0;}private void clear() {updateOperate("");updateText("");}//刷新运算结果private void updateOperate(String new_result){result = new_result;firstNum = result;secondNum = "";operator = "";}//刷新文本显示private void updateText(String text){showText = text;tv_result.setText(showText);}
}

运行效果如下:

clear() {
updateOperate(“”);
updateText(“”);
}
//刷新运算结果
private void updateOperate(String new_result){
result = new_result;
firstNum = result;
secondNum = “”;
operator = “”;
}
//刷新文本显示
private void updateText(String text){
showText = text;
tv_result.setText(showText);
}
}


运行效果如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/c1849ce38aec4088acc92d2c83579118.png#pic_center)

Android开发简易计算器相关推荐

  1. Android开发简易教程

    Android开发简易教程 Android 开发因为涉及到代码编辑.UI 布局.打包等工序,有一款好用的IDE非常重要.Google 最早提供了基于 Eclipse 的 ADT 作为开发工具,后来在2 ...

  2. android计算器弹窗,android实现简易计算器

    本文实例为大家分享了android实现简易计算器展示的具体代码,供大家参考,具体内容如下 效果图: 一.如图,首先布局计算器主页显示 activity_main.xml xmlns:tools=&qu ...

  3. 简单的android小程序计算机,Android实现简易计算器小程序

    本文实例为大家分享了Android实现简易计算器小程序的具体代码,供大家参考,具体内容如下 目标效果: 通过编写代码,可以实现整数和小数的加减乘除运算,以及删除和清空的功能. 1.页面中Button使 ...

  4. Vue框架入门(一)---开发简易计算器

    涉及知识: HTML.CSS.JavaScript Vue(v-for.v-model.v-on.v-clock) Gitee仓库 :https://gitee.com/vgtime123/Calcu ...

  5. java中计算器算cos值,Android开发中计算器的sin、cos及tan值计算问题分析

    本文实例讲述了Android开发中计算器的sin.cos及tan值计算问题.分享给大家供大家参考,具体如下: 接到一个需求 :要求计算器sin90=1,拿到知道很疑问 难道不等于一么?测试了四五个手机 ...

  6. java awt 简单计算器,JAVA Swing 开发简易计算器(上)

    开发一个简易的计算器我们主要分为两大部分:图形界面设计与具体功能实现.这篇文章讲图形界面设计,下篇讲具体功能实现. 代码下载:https://github.com/taifus/Java_Calcul ...

  7. android简易计算,android实现简易计算器

    android实现简易计算器 时间:2021-05-20 本文实例为大家分享了android实现简易计算器展示的具体代码,供大家参考,具体内容如下 效果图: 一.如图,首先布局计算器主页显示 acti ...

  8. java swt 计算器_JAVA开发简易计算器界面-SWT

    大家好,我是成都[LD],博客四年前就申请了,一直没打理,最近正好有时间,遂萌生了写技术博客的念头.我不得不感慨现在新技术更新很快,一不小心,就感觉自身就Out了.记得一年前,当时我也是在51CTO上 ...

  9. android动画sin cos,Android开发中计算器的sin、cos及tan值计算问题分析

    本文实例讲述了Android开发中计算器的sin.cos及tan值计算问题.分享给大家供大家参考,具体如下: 接到一个需求 :要求计算器sin90=1,拿到知道很疑问 难道不等于一么?测试了四五个手机 ...

  10. android 坐标点计算器,Android实现简易计算器

    开之前我还是想问问老师,为什么一定要星期天前交作业呢?由于条件限制,作品是赶出来的不是细细琢磨出来的.所以在这版apk中功能较为简易,有待后期再不断更新与优化 总体效果图如下 布局activity_m ...

最新文章

  1. JAVA获取局域网内对应IP电脑的MAC地址(物理地址)
  2. 20162329 2017-2018-2《程序设计与数据结构》课程总结
  3. libev源码分析---整体设计
  4. 北斗导航 | 获取观测卫星的位置信息,并绘制卫星的方位角和仰角得到星空图:GSV语句(附Matlab源代码)
  5. 暑假学习日记2013/7/26
  6. 我的B端产品经理工作流
  7. 如何使用RMAN duplicate搭建12C的Data Guard环境?
  8. SQL Server中的即时文件初始化概述
  9. linux 下strstr函数,Linux中strchr与strstr函数实现。
  10. git rebase -i之我见
  11. linux 安装vlc源码包,CentOS6.3-快速安装VLC小记
  12. 归并算法(java的简单实现)
  13. mtk平台typec模拟耳机补丁
  14. 区块链学习笔记23——ETH反思
  15. ReferenceQueue、Reference详解
  16. c++小游戏合集(AI)
  17. 天九共享集团:为创业者提供坚实的信用背书
  18. 封装R0805跟R0603贴片电阻有什么区别?
  19. 再见Excel!最强国产开源在线表格Luckysheet走红GitHub
  20. 【李开复】成功、自信、快乐(三)

热门文章

  1. 捷联惯导算法(一)程序简单实现
  2. VB代码颜色修改(修改注册表的方法)
  3. 支持xp的最高配置? 20210518
  4. 值得收藏——在线小视频解析下载教程合集
  5. PLC -- 可编程逻辑控制器
  6. 计算机网络布线总结,网络综合布线实训总结
  7. Carrot2对文章进行聚类代码示例
  8. windows系统安装下GCC编译器
  9. 知识图谱 - 知识体系构建与知识融合
  10. resize2fs调整ext2\ext3\ext4文件系统的大小