Android之一个简单计算器源代码
通过Android4.0 网格布局GridLayout来实现一个简单的计算器界面布局 源码如下(欢迎大家指导 批评 )
package com.android.xiong.gridlayoutTest; import java.math.BigDecimal;
import java.util.regex.Pattern; import com.android.xiong.gridlayoutTest.R.id; import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView; public class MainActivity extends Activity { private EditText print; private static String fistNumber = "0";// 第一次输入的值
private static String secondNumber = "0";// 第二次输入的值
private static String num = "0";// 显示的结果
private static int flg = 0;// 结果累加一次
public Counts take = null; private int[] btidTake = { R.id.txtdivide, R.id.txtx, R.id.txtmin,
R.id.txttakesum }; private Button[] buttonTake = new Button[btidTake.length]; private int[] btidNum = { R.id.txt0, R.id.txt1, R.id.txt2, R.id.txt3,
R.id.txt4, R.id.txt5, R.id.txt6, R.id.txt7, R.id.txt8, R.id.txt9,
R.id.txtspl };
private Button[] buttons = new Button[btidNum.length]; private int[] btcl = { R.id.chars, R.id.charx, R.id.txtb, R.id.txtv };
private Button[] btcls = new Button[btcl.length]; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
print = (EditText) findViewById(R.id.print);
print.setText("0");
print.setEnabled(false);
GetNumber get = new GetNumber();
for (int i = 0; i < btidNum.length; i++) {
buttons[i] = (Button) findViewById(btidNum[i]);
buttons[i].setOnClickListener(get);
}
Compute cm = new Compute();
for (int i = 0; i < btidTake.length; i++) {
buttonTake[i] = (Button) findViewById(btidTake[i]);
buttonTake[i].setOnClickListener(cm);
} Button eq = (Button) findViewById(R.id.txteq); eq.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (flg == 0) {
secondNumber = print.getText().toString();
if (take == Counts.DIVIDE && secondNumber.equals("0")) {
print.setText("0不能为被除数");
} else {
num = take.Values(fistNumber, secondNumber);
fistNumber = num;
secondNumber = "0";
print.setText(num);
flg = 1;
}
}
}
});
Button cleargo = (Button) findViewById(R.id.cleargo);
cleargo.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (num.length() > 1) {
num = num.substring(0, num.length() - 1);
} else {
num = "0";
}
print.setText(num);
}
});
Button clear = (Button) findViewById(R.id.clear);
clear.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub
num = "0";
fistNumber = secondNumber = num;
print.setText(num);
flg = 0;
}
});
for (int i = 0; i < btcl.length; i++) {
btcls[i] = (Button) findViewById(btcl[i]);
btcls[i].setOnClickListener(new OnTake());
}
} // 给 EditText赋值
class GetNumber implements OnClickListener { @Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (flg == 1)
num = "0";
if (num.equals("0")) {
print.setText("");
num = v.getId() == R.id.txtspl ? "0" : "";
}
String txt = ((Button) v).getText().toString();
boolean s = Pattern.matches("(\\d+).?(\\d)*", num + txt);
num = s ? (num + txt) : num;
print.setText(num); }
} // 根据条件计算
class Compute implements OnClickListener { @Override
public void onClick(View arg0) { fistNumber = print.getText().toString();
// TODO Auto-generated method stub
switch (arg0.getId()) {
case R.id.txttakesum:
take = Counts.ADD;
break;
case R.id.txtmin:
take = Counts.MINUS;
break;
case R.id.txtx:
take = Counts.MULTIPLY;
break;
case R.id.txtdivide:
take = Counts.DIVIDE;
break;
}
num = "0";
flg = 0;
} } class OnTake implements OnClickListener { @Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.chars:
num = "-" + num;
break;
case R.id.charx:
num = BigDecimal.valueOf(1).divide(new BigDecimal(num))
.toString();
break;
case R.id.txtb:
num = new BigDecimal(num).divide(BigDecimal.valueOf(100))
.toString();
break;
case R.id.txtv:
Double numss = Math.sqrt(new BigDecimal(num).doubleValue());
num = numss.toString();
}
print.setText(num);
flg=0; } } @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;
} }
package com.android.xiong.gridlayoutTest; import java.math.BigDecimal; public enum Counts {
ADD, MINUS, MULTIPLY, DIVIDE, MARK, ROOT;
public String Values(String num1, String num2) {
BigDecimal number1 = new BigDecimal(num1);
BigDecimal number2 = new BigDecimal(num2);
BigDecimal number = BigDecimal.valueOf(0);
switch (this) {
case ADD:
number = number1.add(number2);
break;
case MINUS:
number = number1.subtract(number2);
break;
case MULTIPLY:
number = number1.multiply(number2);
break;
case DIVIDE:
number = number1.divide(number2,20,BigDecimal.ROUND_UP);
break; }
return number.toString(); } }
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="40px"
android:columnCount="5"
android:rowCount="6"
tools:context=".MainActivity" > <EditText
android:id="@+id/print"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_columnSpan="5"
android:layout_marginLeft="2px"
android:layout_marginRight="2px"
android:layout_row="0"
android:background="#eee" /> <Button
android:id="@+id/cleargo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="0"
android:layout_row="1"
android:text="《--" /> <Button
android:id="@+id/clear"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="3"
android:layout_columnSpan="2"
android:layout_row="1"
android:layout_gravity="fill_horizontal"
android:text="清屏" /> <Button
android:id="@+id/chars"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="1"
android:layout_row="1"
android:text="-/+" /> <Button
android:id="@+id/charx"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="2"
android:layout_row="1"
android:text="1/x" /> <Button
android:id="@+id/txt7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="0"
android:layout_row="2"
android:text="7" /> <Button
android:id="@+id/txt8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="1"
android:layout_row="2"
android:text="8" /> <Button
android:id="@+id/txt9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="2"
android:layout_row="2"
android:text="9" /> <Button
android:id="@+id/txtdivide"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="3"
android:layout_row="2"
android:text="÷" /> <Button
android:id="@+id/txtb"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="4"
android:layout_row="2"
android:text="%" /> <Button
android:id="@+id/txt4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="0"
android:layout_row="3"
android:text="4" /> <Button
android:id="@+id/txt5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="1"
android:layout_row="3"
android:text="5" /> <Button
android:id="@+id/txt6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="2"
android:layout_row="3"
android:text="6" /> <Button
android:id="@+id/txtx"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="3"
android:layout_row="3"
android:text="X" /> <Button
android:id="@+id/txtv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="4"
android:layout_row="3"
android:text="√" /> <Button
android:id="@+id/txt1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="0"
android:layout_row="4"
android:text="1" /> <Button
android:id="@+id/txt2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="1"
android:layout_row="4"
android:text="2" /> <Button
android:id="@+id/txt3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="2"
android:layout_row="4"
android:text="3" /> <Button
android:id="@+id/txtmin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="3"
android:layout_row="4"
android:text="-" /> <Button
android:id="@+id/txteq"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="4"
android:layout_gravity="fill_vertical"
android:layout_row="4"
android:layout_rowSpan="2"
android:text="=" /> <Button
android:id="@+id/txt0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="0"
android:layout_columnSpan="2"
android:layout_gravity="fill_horizontal"
android:layout_row="5"
android:text="0" /> <Button
android:id="@+id/txtspl"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="2"
android:layout_row="5"
android:text="." /> <Button
android:id="@+id/txttakesum"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="3"
android:layout_row="5"
android:text="+" /> </GridLayout>
Android之一个简单计算器源代码的更多相关文章
- 每天2个android小例子----简单计算器源代码
通过Android4.0 网格布局GridLayout来实现一个简单的计算器界面布局 package com.android.xiong.gridlayoutTest; import java.mat ...
- 一个用WPF做的简单计算器源代码
一.界面设计XAML代码 <Window x:Class="fengjisuanqi.MainWindow" xmlns="http://schemas.micro ...
- Android——例子:简单计算器
今天没事干,做了个单击事件的练习. 截图如下:(一个小小的计算器) XMl文件中的代码: <LinearLayout xmlns:android="http://schemas.and ...
- 【C#】简单计算器源代码
form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.D ...
- 菜鸟学Android编程——简单计算器《一》
菜鸟瞎搞,高手莫进 本人菜鸟一枚,最近在学Android编程,网上看了一些视频教程,于是想着平时手机上的计算器应该很简单,自己何不尝试着做一个呢? 于是就冒冒失失的开撸了. 简单计算器嘛,功能当然很少 ...
- 简单计算器 安卓 Android 作业
Android老师布置的课程作业——简单计算器 功能要求实现四则运算,参考界面见下图: 首先给各位老铁提供apk安装包以及项目压缩包,略表诚意~ github地址:https://github.com ...
- Android应用Preference相关及源代码浅析(SharePreferences篇)
1 前言 在我们开发Android过程中数据的存储会有非常多种解决方式,譬如常见的文件存储.数据库存储.网络云存储等,可是Android系统为咱们提供了更加方便的一种数据存储方式.那就是SharePr ...
- android sdk 编译--如何将源代码加入android.jar,以及make原理
首先是这个问题如何修改. 在/frameworks/base/Android.mk中,找到如下行:packages_to_document :=在该变量的赋值语句最后添加xxxxx (这里是你的包的名 ...
- 简单计算器的C实现-函数指针,main函数传参
/** 程序功能:简单计算器,实现加减乘除平方* 作者版本日期:2015.11.08 zhouhb OK* 源代码:李明 <新概念C语言培训>第33集 C语言Shell命令解释器的实现* ...
随机推荐
- as3声谱效果,有在线演示地址,能够播放本地音乐
来源:潮汕IT男 简单的as3声谱效果,能够播放本地音乐. tag=as3" style="word-wrap:break-word; margin:0px; padding:0p ...
- 完整的RecylerView的使用方法和例子
一.RecylerView的特点 1. 不关心Item是否显示在正确的位置,通过设置不同LayoutManager 的实例让Item显示不同的风格. 2. 不关心 Item间如何分离.要定义It ...
- 代理丶通知丶KVO之间区别和各自优势
文/OyeOnoOmg(简书作者)原文链接:http://www.jianshu.com/p/75d3fd218a23著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 今天在网上看到一个 ...
- 自定义UIViewController与xib文件关系深入分析
6月14日 上海 OSC 源创会开始报名啦,有很多机械键盘送哦!!! 用xcode模板向工程加入UIViewController sub class的时候,如果选中了with xib for inte ...
- BZOJ 1103: [POI2007]大都市meg( 树链剖分 )
早上数学考挂了...欲哭无泪啊下午去写半个小时政治然后就又可以来刷题了.. 树链剖分 , 为什么跑得这么慢... ------------------------------------------- ...
- ios改变系统默认样式
iso系统下默认不能修改submit样式,于是加上如下属性就可以修改: -webkit-appearance:none; -moz-appearance:none; 先记录下.
- 配置系统引导启动SuperScoekt
配置系统引导启动SuperScoekt SuperSocket源码解析之启动过程 一 简介 这里主要说明从配置系统引导启动SuperScoekt作为应用程序,且以控制台程序方式启动 二 启动过程 2. ...
- 基于visual Studio2013解决算法导论之055拓扑排序
题目 拓扑排序 解决代码及点评 // 拓扑排序.cpp : 定义控制台应用程序的入口点. // // 深度优先.cpp : 定义控制台应用程序的入口点. // // 图的邻接表表示.cpp : ...
- 嵌入式MCU开发群资源
STM32CubeMX是一款图形化软件设置工具,允许使用图形化向导来生成C初始化代码.它是未来开发stm32系列产品的主流软件,是ST公司的主动原创,可以减轻开发工作,时间和费用.STM32Cube ...
- arm:c语言和汇编混合编程
仅作演示. 1.C和汇编可相互调用,汇编子函数格式参考 汇编:普通的函数调用的汇编代码解析 http://www.cnblogs.com/mylinux/p/4139972.html 本文演示了 : ...