0
点赞
收藏
分享

微信扫一扫

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

通过Android4.0 网格布局GridLayout来实现一个简单的计算器界面布局   源码如下(欢迎大家指导 批评 )

Android之一个简单计算器源代码_ide


 

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>


举报

相关推荐

0 条评论