一、内容

基于AndroidStudio,实现一个简易的计算器(界面+简单的计算)。

二、思路

1.首先设计界面,activity_main.xml

计算器界面,使用了网格布局GridLayout,EditText——显示数字;数字、符号按钮Button;

<?xml version="1.0" encoding="utf-8"?>
<GridLayout  xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:rowCount="6"android:columnCount="4"><!--文本标签--><EditTextandroid:id="@+id/edit"android:layout_width="350dp"android:layout_height="wrap_content"android:layout_columnSpan="4"android:layout_marginLeft="4px"android:gravity="left"android:textSize="50dp" /><Buttonandroid:id="@+id/clear"android:layout_width="353dp"android:layout_height="wrap_content"android:layout_columnSpan="4"android:text="清除"android:textSize="26sp" /><Buttonandroid:id="@+id/btn1"android:text="1"android:textSize="26sp" /><Buttonandroid:id="@+id/btn2"android:text="2"android:textSize="26sp" /><Buttonandroid:id="@+id/btn3"android:text="3"android:textSize="26sp" /><Buttonandroid:id="@+id/jia"android:text="+"android:textSize="26sp" /><Buttonandroid:id="@+id/btn4"android:text="4"android:textSize="26sp" /><Buttonandroid:id="@+id/btn5"android:text="5"android:textSize="26sp" /><Buttonandroid:id="@+id/btn6"android:text="6"android:textSize="26sp" /><Buttonandroid:id="@+id/jian"android:text="-"android:textSize="26sp" /><Buttonandroid:id="@+id/btn7"android:text="7"android:textSize="26sp" /><Buttonandroid:id="@+id/btn8"android:text="8"android:textSize="26sp" /><Buttonandroid:id="@+id/btn9"android:text="9"android:textSize="26sp" /><Buttonandroid:id="@+id/cheng"android:text="*"android:textSize="26sp" /><Buttonandroid:id="@+id/dian"android:text="."android:textSize="26sp" /><Buttonandroid:id="@+id/btn0"android:text="0"android:textSize="26sp" /><Buttonandroid:id="@+id/sum"android:text="="android:textSize="26sp" /><Buttonandroid:id="@+id/chu"android:text="/"android:textSize="26sp" />
</GridLayout>

2.接下来是功能的实现,MainActivity.java

给各个按钮注册点击事件、对输入内容的判断和计算等。

package com.example.jisuanqi;import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;public class MainActivity extends AppCompatActivity {Button btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9, btn0; // 数字按钮Button jia, jian, cheng, chu, dian, sum, clear;// +号EditText edit; // 显示文本private String ss = "";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 获取页面上的控件btn1 = (Button) findViewById(R.id.btn1);btn2 = (Button) findViewById(R.id.btn2);btn3 = (Button) findViewById(R.id.btn3);btn4 = (Button) findViewById(R.id.btn4);btn5 = (Button) findViewById(R.id.btn5);btn6 = (Button) findViewById(R.id.btn6);btn7 = (Button) findViewById(R.id.btn7);btn8 = (Button) findViewById(R.id.btn8);btn9 = (Button) findViewById(R.id.btn9);btn0 = (Button) findViewById(R.id.btn0);jia = (Button) findViewById(R.id.jia);jian = (Button) findViewById(R.id.jian);cheng = (Button) findViewById(R.id.cheng);chu = (Button) findViewById(R.id.chu);sum = (Button) findViewById(R.id.sum);dian = (Button) findViewById(R.id.dian);clear = (Button) findViewById(R.id.clear);edit = (EditText) findViewById(R.id.edit);// 按钮的单击事件btn1.setOnClickListener(new Click());btn2.setOnClickListener(new Click());btn3.setOnClickListener(new Click());btn4.setOnClickListener(new Click());btn5.setOnClickListener(new Click());btn6.setOnClickListener(new Click());btn7.setOnClickListener(new Click());btn8.setOnClickListener(new Click());btn9.setOnClickListener(new Click());btn0.setOnClickListener(new Click());jia.setOnClickListener(new Click());jian.setOnClickListener(new Click());cheng.setOnClickListener(new Click());chu.setOnClickListener(new Click());sum.setOnClickListener(new Click());dian.setOnClickListener(new Click());clear.setOnClickListener(new Click());edit.setOnClickListener(new Click());}// 设置按钮点击后的监听class Click implements View.OnClickListener {public void onClick(View v) {switch (v.getId()) {                //switch循环获取点击按钮后的值case R.id.clear: {ss = "";edit.setText(ss);}break;case R.id.btn0: {ss += "0";edit.setText(ss);}break;case R.id.btn1: {ss += "1";edit.setText(ss);}break;case R.id.btn2: {ss += "2";edit.setText(ss);}break;case R.id.btn3: {ss += "3";edit.setText(ss);}break;case R.id.btn4: {ss += "4";edit.setText(ss);}break;case R.id.btn5: {ss += "5";edit.setText(ss);}break;case R.id.btn6: {ss += "6";edit.setText(ss);}break;case R.id.btn7: {ss += "7";edit.setText(ss);}break;case R.id.btn8: {ss += "8";edit.setText(ss);}break;case R.id.btn9: {ss += "0";edit.setText(ss);}break;case R.id.dian: {if (ss.length() == 0 || ss.indexOf(" ") == ss.length() - 3 || ss.lastIndexOf(".") > ss.indexOf(" ")) {break;} else {ss += ".";edit.setText(ss);}}break;case R.id.jia: {if (ss.length() == 0) {break;}if (ss.contains(" ")) {if (ss.indexOf(" ") == ss.length() - 3 || ss.indexOf(" ") == ss.length() - 2 || ss.indexOf(" ") == ss.length() - 1)break;getResult();}ss += " + ";edit.setText(ss);}break;case R.id.jian: {if (ss.length() == 0) {break;}if (ss.contains(" ")) {if (ss.indexOf(" ") == ss.length() - 3 || ss.indexOf(" ") == ss.length() - 2 || ss.indexOf(" ") == ss.length() - 1)break;getResult();}ss += " - ";edit.setText(ss);}break;case R.id.cheng: {if (ss.length() == 0) {break;}if (ss.contains(" ")) {if (ss.indexOf(" ") == ss.length() - 3 || ss.indexOf(" ") == ss.length() - 2 || ss.indexOf(" ") == ss.length() - 1)break;getResult();}ss += " × ";edit.setText(ss);}break;case R.id.chu: {if (ss.length() == 0) {break;}if (ss.contains(" ")) {if (ss.indexOf(" ") == ss.length() - 3 || ss.indexOf(" ") == ss.length() - 2 || ss.indexOf(" ") == ss.length() - 1)break;getResult();}ss += " / ";edit.setText(ss);}break;case R.id.sum:getResult();break;}}private void getResult() {double result = 0;if (ss == null || ss.equals("")) return;if (!ss.contains(" ")) return;String s1 = ss.substring(0, ss.indexOf(" "));String op = ss.substring(ss.indexOf(" ") + 1, ss.indexOf(" ") + 2);String s2 = ss.substring(ss.indexOf(" ") + 3);if (!s1.equals("") && !s2.equals("")) {double d1 = Double.parseDouble(s1);double d2 = Double.parseDouble(s2);switch (op) {case "+":result = d1 + d2;break;case "-":result = d1 - d2;break;case "×":result = d1 * d2;break;case "÷": {if (d2 == 0) {edit.setText("不能除以零");break;}result = d1 / d2 * 1.0;}break;}int r = (int) result;if (r == result) {edit.setText("" + r);ss = "" + r;} else {edit.setText(result + "");ss = "" + result;}}}}

 

三、总结

通过本次简单计算器实现,我对Android有了更好的理解,对Android studio这个软件更加熟悉,通过不断看书以及网上查资料和看别人的博客真的学到了很多东西,我会努力的。

Android Studio简单计算器App实现相关推荐

  1. Android studio 简易计算器App的实现及实现加减乘除功能(附完整源码)

          在Android studio 实现简易计算器App并实现加减乘除功能 结果 activity_main.xml <?xml version="1.0" enco ...

  2. Android Studio 简单计算器布局(模仿win10电脑计算器)

    一.说明 我使用的是Android Studio2021.12.1版本的: 本程序分为代码和素材以及运行结果三部分: 在将代码完全粘贴到软件中,常见问题就是图片丢失,这样需要将涉及到的图片导入到本项目 ...

  3. android页面布局计算机,Android Studio制作简单计算器App

    Android Studio制作简单计算器App 计算机界面如图: 程序设计步骤: (1)在布局文件中声明编辑文件框EditText,按钮Button等组件. (2)在MainActivity中获取组 ...

  4. Android studio制作计算器源代码

    版权声明:本文为博主原创文章,未经博主允许不得转载.https://mp.csdn.net/postedit/82623704 一.Android studio制作计算器源代码 这是我学Android ...

  5. 利用Android Studio快速搭建App

    大家好,我是烤鸭: 给大家分享一个简单的用Android Studio快速搭建app 工具: Android Studio 64位 专业版 插件: Datepicker Timepicker okht ...

  6. Android开发——简单计算器实现

    计算器项目,要求实现加.减.乘.除.求倒数.求平方根等简单运算. 真机调试结果如下图: 布局文件:main_activity.xml <?xml version="1.0" ...

  7. Android Studio 开发–微信APP门户界面设计

    Android Studio 开发–微信APP门户界面设计 本次Github代码仓库 --crcr1013/MyWechat 文章目录 Android Studio 开发--微信APP门户界面设计 前 ...

  8. android获取其他app布局,Android Studio查看其它APP的布局结构

    概述 日常使用别家的APP过程中,会遇到一些比较好看的布局,这时候我们就想学习一下别人的布局结构,以便参考. (1)手机连接电脑.设置手机为USB调试模式 (2)运行Android Studio,打开 ...

  9. 基于Android平台的记事本软件(Android Studio项目+报告+app文件)

    移动应用开发技术 期末考核报告 题   目:        基于Android平台的记事本软件             学生姓名     学生学号                           ...

最新文章

  1. 太好玩了,爬虫、部署API、加小程序,一条龙玩转知乎热榜!
  2. Linux下实现apache代理tomcat
  3. 服务机器人---充电级和行进面
  4. 考前自学系列·计算机组成原理·查询方式/中断方式/DMA方式的适用范围及判断
  5. 深度学习核心技术精讲100篇(五十四)-阿里文娱多模态视频分类算法中的特征改进
  6. linux安装autossh详细教程,在Linux下安装autossh的教程
  7. 获取32R的图像的直方图的一个算法
  8. java的abstract的意思_java – spring中的abstract =“true”是什么意思?
  9. php判断是否是关联数组,php 关联数组判断是否为空
  10. Python3爬取影片入库
  11. 一种基于语音识别的机器人语义识别系统的制作方法
  12. 破解版PDF编辑器————Adobe Acrobat DC
  13. com/lsass.exe smss.exe(磁碟机病毒) 感染方式之我分析 -- 2008第一博
  14. php中的oop思想,oop_php oop思想_oop和ood
  15. AopAutoConfiguration matched: - @ConditionalOnProperty (spring.aop.auto=true) matched (OnPrope.
  16. 玩客云 虚拟服务器设置,玩客云刷 Linux 系统后遇到的问题和设置固定 IP
  17. Zeppelin的使用
  18. 重装mysql 重启服务service mysqld restart一直卡着怎么解决Redirecting to /bin/systemctl restart mysqld.service
  19. 论文阅读(21 AAAI)Mind-the-Gap Unsupervised Domain Adaptation for Text-Video Retrieval
  20. 【Web前端】CSS使用方法

热门文章

  1. 1.1信息系统与信息化-1.2信息系统开发方法
  2. PHP函数的嵌套调用
  3. FFmpeg 麦克风推流 AAC格式采样率44.1k,码率32k
  4. 解决Error running ‘Tomcat(备注这里你起的名字)‘: SSL HTTP Connector node not found: set up one in the server.xml
  5. python·面向对象和面向过程
  6. 震撼, tineye
  7. Go2Shell设置
  8. 30张图带你搞懂!路由器,集线器,交换机,网桥,光猫有啥区别?
  9. Python负数取余总结
  10. 屏蔽百家号 -(baijiahao)