通过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之一个简单计算器源代码的更多相关文章

  1. 每天2个android小例子----简单计算器源代码

    通过Android4.0 网格布局GridLayout来实现一个简单的计算器界面布局 package com.android.xiong.gridlayoutTest; import java.mat ...

  2. 一个用WPF做的简单计算器源代码

    一.界面设计XAML代码 <Window x:Class="fengjisuanqi.MainWindow" xmlns="http://schemas.micro ...

  3. Android——例子:简单计算器

    今天没事干,做了个单击事件的练习. 截图如下:(一个小小的计算器) XMl文件中的代码: <LinearLayout xmlns:android="http://schemas.and ...

  4. 【C#】简单计算器源代码

    form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.D ...

  5. 菜鸟学Android编程——简单计算器《一》

    菜鸟瞎搞,高手莫进 本人菜鸟一枚,最近在学Android编程,网上看了一些视频教程,于是想着平时手机上的计算器应该很简单,自己何不尝试着做一个呢? 于是就冒冒失失的开撸了. 简单计算器嘛,功能当然很少 ...

  6. 简单计算器 安卓 Android 作业

    Android老师布置的课程作业——简单计算器 功能要求实现四则运算,参考界面见下图: 首先给各位老铁提供apk安装包以及项目压缩包,略表诚意~ github地址:https://github.com ...

  7. Android应用Preference相关及源代码浅析(SharePreferences篇)

    1 前言 在我们开发Android过程中数据的存储会有非常多种解决方式,譬如常见的文件存储.数据库存储.网络云存储等,可是Android系统为咱们提供了更加方便的一种数据存储方式.那就是SharePr ...

  8. android sdk 编译--如何将源代码加入android.jar,以及make原理

    首先是这个问题如何修改. 在/frameworks/base/Android.mk中,找到如下行:packages_to_document :=在该变量的赋值语句最后添加xxxxx (这里是你的包的名 ...

  9. 简单计算器的C实现-函数指针,main函数传参

    /** 程序功能:简单计算器,实现加减乘除平方* 作者版本日期:2015.11.08 zhouhb OK* 源代码:李明 <新概念C语言培训>第33集 C语言Shell命令解释器的实现* ...

随机推荐

  1. XMPP个人信息展示

    在现阶段的通信服务中.各种标准都有,因此会出现无法实现相互连通,而XMPP(Extensible Message and presence Protocol)协议的出现.实现了整个及时通信服务协议的互 ...

  2. RGB,CMYK,HSB各种颜色表示的转换 C#语言

    Introduction Why an article on "colors"? It's the same question I asked myself before writ ...

  3. web.xml 中<taglib>报错(转载)

    在web.xml加入taglib <taglib> <taglib-uri>/WEB-INF/tiles.tld</taglib- uri> <taglib- ...

  4. Android:OptionMenu

    MainActivity: package com.example.optionmenu; import android.content.Intent; import android.os.Bundl ...

  5. windows下apache+wsgi+web.py环境搭建

    首先安装好wsgi模块并启用:1.下载地址:我本机是python2.7 http://code.google.com/p/modwsgi/downloads/detail?name=mod_wsgi- ...

  6. Google Code Jam Round 1C 2015 Problem A. Brattleship

    Problem You're about to play a simplified "battleship" game with your little brother. The ...

  7. 【集训笔记】博弈论相关知识【HDOJ 1850【HDOJ2147

    以下资料来自:http://blog.csdn.net/Dinosoft/article/details/6795700 http://qianmacao.blog.163.com/blog/stat ...

  8. MVC-01 概述

    一.何谓MVC 1.MVC是开发时所使用的一种架构(框架). 2.目的在于简化软件开发的复杂度,以一种概念简单却又权责分明的架构,贯穿整个软件开发流程,通过“商业逻辑层”与“数据表现层”的切割,让这两 ...

  9. phpmailer发送邮件,可以带附件

    先从网上下载phpmailer压缩包 将解压的文件导入到你的项目中 实例 require_once ('PHPMailer/class.phpmailer.php'); //引入phpmailer文件 ...

  10. Apache ab 使用说明

    第一章 简介 ab是Apache超文本传输协议(HTTP)的性能测试工具.其设计意图是描绘当前所安装的Apache的执行性能,主要是显示你安装的Apache每秒可以处理多少个请求. 第二章 说明 ab ...