本文实例讲述了Android开发实现的简单计算器功能。分享给大家供大家参考,具体如下:

这个Android计算器虽然还有点小bug,不过简单的计算功能还是没问题的哦;

先上图看效果

比较简单,所以我就没怎么写注释,应该一看就能明白的

有不明白的可以发信问我

先贴MainActivity.java代码

package com.example.calculator;

import android.app.Activity;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;

import android.widget.ImageView;

import android.widget.TextView;

import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {

Button b1, b2, b3, b4, b5, b6, b7, b8, b9, b0, bp, bs, bm, bd, bc, be;

ImageView delete;

TextView tv;

EditText show;

String showString = "", option = "";

int showfirst = 0;

String exception = "";

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

b0 = (Button) findViewById(R.id.bt_0);

b1 = (Button) findViewById(R.id.bt_1);

b2 = (Button) findViewById(R.id.bt_2);

b3 = (Button) findViewById(R.id.bt_3);

b4 = (Button) findViewById(R.id.bt_4);

b5 = (Button) findViewById(R.id.bt_5);

b6 = (Button) findViewById(R.id.bt_6);

b7 = (Button) findViewById(R.id.bt_7);

b8 = (Button) findViewById(R.id.bt_8);

b9 = (Button) findViewById(R.id.bt_9);

bp = (Button) findViewById(R.id.bt_plus);

bs = (Button) findViewById(R.id.bt_sub);

bm = (Button) findViewById(R.id.bt_mutilate);

bd = (Button) findViewById(R.id.bt_div);

bc = (Button) findViewById(R.id.bt_c);

be = (Button) findViewById(R.id.bt_equ);

b1.setOnClickListener(this);

b2.setOnClickListener(this);

b3.setOnClickListener(this);

b4.setOnClickListener(this);

b5.setOnClickListener(this);

b6.setOnClickListener(this);

b7.setOnClickListener(this);

b8.setOnClickListener(this);

b9.setOnClickListener(this);

b0.setOnClickListener(this);

bp.setOnClickListener(this);

bs.setOnClickListener(this);

bm.setOnClickListener(this);

bd.setOnClickListener(this);

bc.setOnClickListener(this);

be.setOnClickListener(this);

show = (EditText) findViewById(R.id.et_show);

delete = (ImageView) findViewById(R.id.iv_delete);

delete.setOnClickListener(this);

tv=(TextView) findViewById(R.id.author);

tv.setOnClickListener(this);

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

// Handle action bar item clicks here. The action bar will

// automatically handle clicks on the Home/Up button, so long

// as you specify a parent activity in AndroidManifest.xml.

int id = item.getItemId();

if (id == R.id.action_settings) {

return true;

}

return super.onOptionsItemSelected(item);

}

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.bt_0:

showString += "0";

break;

case R.id.bt_1:

showString += "1";

break;

case R.id.bt_2:

showString += "2";

break;

case R.id.bt_3:

showString += "3";

break;

case R.id.bt_4:

showString += "4";

break;

case R.id.bt_5:

showString += "5";

break;

case R.id.bt_6:

showString += "6";

break;

case R.id.bt_7:

showString += "7";

break;

case R.id.bt_8:

showString += "8";

break;

case R.id.bt_9:

showString += "9";

break;

case R.id.bt_plus:

if (showString.equals(""))

exception = "先输入数值哦";

else {

showfirst = Integer.parseInt(showString);

showString = "";

option = "+";

}

break;

case R.id.bt_sub:

if (showString.equals(""))

exception = "先输入数值哦";

else {

showfirst = Integer.parseInt(showString);

showString = "";

option = "-";

}

break;

case R.id.bt_mutilate:

if (showString.equals(""))

exception = "先输入数值哦";

else {

showfirst = Integer.parseInt(showString);

showString = "";

option = "*";

}

break;

case R.id.bt_div:

if (showString.equals(""))

exception = "先输入数值哦";

else {

showfirst = Integer.parseInt(showString);

showString = "";

option = "/";

}

break;

case R.id.bt_equ:

if (option.equals("+"))

showString = showfirst + Integer.parseInt(showString) + "";

else if (option.equals("-")) {

showString = showfirst - Integer.parseInt(showString) + "";

} else if (option.equals("*")) {

showString = showfirst * Integer.parseInt(showString) + "";

} else if (option.equals("/")) {

if (showString.equals("0")) {

exception = "除数不能为0!";

} else

showString = showfirst / Integer.parseInt(showString) + "";

}

break;

case R.id.bt_c:

showString = "";

break;

case R.id.iv_delete:

Toast.makeText(MainActivity.this, showString + "已被清空",

Toast.LENGTH_SHORT).show();

showString = "";

break;

case R.id.author:

Toast.makeText(MainActivity.this, "郑明亮\n软件工程\nQQ:1072307340",

Toast.LENGTH_SHORT).show();

break;

default:

break;

}

if (exception.equals(""))

show.setText(showString);

else {

show.setText(exception);

exception = "";

}

// 设置文本框颜色;

if (!show.getText().toString().equals("")) {

delete.setBackgroundColor(R.drawable.delete_gray);

}

else {

delete.setBackgroundResource(R.drawable.delete);

}

}

}

再贴布局activity_main.xml:

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

tools:context="com.example.calculator.MainActivity" >

android:layout_width="match_parent"

android:layout_height="wrap_content" >

android:id="@+id/et_show"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:hint="请输入数字" />

android:id="@+id/iv_delete"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignRight="@id/et_show"

android:src="@drawable/delete_and_deletegray" >

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_below="@+id/et_show"

android:focusable="false"

android:gravity="center"

android:layout_marginTop="25dp"

android:columnCount="4"

android:horizontalSpacing="0dp"

android:orientation="horizontal"

android:stretchMode="none" >

android:id="@+id/bt_1"

android:layout_height="wrap_content"

android:text="1" />

android:id="@+id/bt_2"

android:text="2" />

android:id="@+id/bt_3"

android:text="3" />

android:id="@+id/bt_div"

android:text="/" />

android:id="@+id/bt_4"

android:text="4" />

android:id="@+id/bt_5"

android:text="5" />

android:id="@+id/bt_6"

android:text="6" />

android:id="@+id/bt_mutilate"

android:text="X" />

android:id="@+id/bt_7"

android:text="7" />

android:id="@+id/bt_8"

android:text="8" />

android:id="@+id/bt_9"

android:text="9" />

android:id="@+id/bt_sub"

android:text="-" />

android:id="@+id/bt_0"

android:layout_columnSpan="2"

android:layout_gravity="fill_horizontal"

android:text="0"

android:width="2dp" />

android:id="@+id/bt_c"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="C" />

android:id="@+id/bt_plus"

android:layout_gravity="fill_vertical"

android:layout_rowSpan="2"

android:text="+" />

android:id="@+id/bt_equ"

android:layout_columnSpan="3"

android:layout_gravity="fill_horizontal"

android:text="=" />

android:id="@+id/author"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Author:Bri"

/>

android:id="@+id/test"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="test:www.jb51.net"

/>

我还写了一个drawable的xml,自己看吧

delete_and_deletegray.xml:

附:完整实例代码点击此处本站下载。

PS:这里再为大家推荐几款计算工具供大家进一步参考借鉴:

希望本文所述对大家Android程序设计有所帮助。

andorid简单计算器java源码_Android开发实现的简单计算器功能【附完整demo源码下载】...相关推荐

  1. java整蛊小游戏源码_Java 开发打飞机小游戏(附完整源码)

    上图 写在前面 技术源于分享,所以今天抽空把自己之前用java做过的小游戏整理贴出来给大家参考学习.java确实不适合写桌面应用,这里只是通过这个游戏让大家理解oop面向对象编程的过程,纯属娱乐.代码 ...

  2. java定焦点_Android 开发 Camera1_如何使用对焦功能

    前言 Camera1的自动对焦还是有一些坑值得开一个篇幅来讲解,一般对焦Mode有以下几种: Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO 连续自动对焦视 ...

  3. android自动更新demo,Android程序自动更新功能模块的实现方法【附完整demo源码下载】...

    本文实例讲述了Android程序自动更新功能模块的实现方法.分享给大家供大家参考,具体如下: 在程序启动的时候检测服务器上有没有对应版本更新,如果有更新,提示用户是否更新. 在程序启动的时候首先调用更 ...

  4. python提取发票信息发票识别_(附完整python源码)基于tensorflow、opencv的入门案例_发票识别二:字符分割...

    (附完整python源码)基于tensorflow.opencv的入门案例_发票识别二:字符分割 发布时间:2018-05-14 20:16, 浏览次数:1201 , 标签: python tenso ...

  5. java利用freemarker导出含有list的数据到word,有demo可供下载

    java利用freemarker导出含有list的数据到word,有demo可供下载 前言 FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页.电子 ...

  6. C语言3D矢量操作有关的功能(附完整源码)

    3D矢量操作有关的功能 3D矢量数据类型定义 geometry_datatypes.h 3D矢量操作有关的功能以下几个接口 3D矢量操作有关的功能的完整源码(定义,实现,main函数测试) 3D矢量数 ...

  7. 【Android】蓝牙开发——BLE(低功耗蓝牙)(附完整Demo)

    目录 目录 前言 一.相关概念介绍 二.实战开发 三.项目演示 四.Demo案例源码地址 五.更新记录 1.2020/12/29 :修改 setupService()中错误 2.2021/05/14 ...

  8. JAVA微信企业付款到零钱(十分钟搞定),附完整DEMO下载

    最近帮朋友做了一个简单的微分销系统,实现从企业付款到零钱分润的功能,简单记录一下微信提现功能开发的流程, 主要就是按规则封装好请求参数调用微信接口,涉及一些签名校验: A.接口流程 获取用户OPENI ...

  9. Java链表的书_JAVA实现双向链表的增删功能,完整代码package linked;class LinkedTable{ }public class Linke...

    JAVA实现双向链表的增删功能,完整代码 package linked; class LinkedTable{ } public class LinkedTableTest { //构造单链表 sta ...

  10. 安卓打开java文件管理器_Android开发之简单文件管理器实现方法

    本文实例讲述了Android开发之简单文件管理器实现方法.分享给大家供大家参考,具体如下: 这里运用Java I/O.ListActivity.Dialog.Bitmap等实现简单文件管理器,可以查看 ...

最新文章

  1. 【java】Maven工程引入各种jar包的功能
  2. Python分式计算
  3. USTC English Club Note20171013(5)
  4. python类定义全局变量_python之全局变量
  5. 4152. [AMPPZ2014]The Captain(稠密图最短路)
  6. codeforces 263A-C语言解题报告
  7. 高并发场景下,如何保证生产者投递到消息中间件的消息不丢失?
  8. iPhone 13外观四年以来首次改动:真的尽力了
  9. drbd相关知识点解析
  10. TCP SYN-Cookie背后的人和事
  11. 串口调试助手(CM野人版)4.0有严重Bug,已经跟作者反应,等候更新
  12. ARM(IMX6U)裸机之I.MX6ULL启动头文件详解(内部BOOT ROM、IVT + Boot data + DCD + led.bin)
  13. ocr文字识别软件安卓
  14. Unet——pytorch
  15. Miko二次元动漫视频网站源码 视频播放带仿哔哩哔哩视频字幕弹幕
  16. HTML中怎样把文字分两栏显示,word设置一页分两栏的三种方法
  17. 关于SES2000定位数据后修正的过程说明
  18. Invalid id reference
  19. 深度学习初学者,如何下载常用公开数据集并使用呢?
  20. thinkphp框架之后台登录页面cookie有效期设置

热门文章

  1. 【全套完结】高频电子线路实验手册——全套实验报告册
  2. 关于 安装串口CH340、CH341驱动预安装成功问题
  3. 面试之MySQL调优问题
  4. mybatis源码解析
  5. python pandas 格式化qcc数据【最后保存csv文件】
  6. 通达信最新 行情服务器,【图】2021年通达信新的高级行情服务器IP_股票,炒股,炒股公式,股票指标,股票论坛_股票软件技术交流论坛_理想论坛 - 股票论坛...
  7. 自媒体采集平台免费,免费的自媒体采集平台
  8. 标签打印软件如何制作菱形标签
  9. UDS诊断服务基础篇之27
  10. Arduino(c) 16进制转字符串