当前位置: 代码迷 >> Android >> Android之一个简略计算器源代码
  详细解决方案

Android之一个简略计算器源代码

热度:105   发布时间:2016-05-01 09:51:27.0
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);			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>


  相关解决方案