zoukankan      html  css  js  c++  java
  • 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>


  • 相关阅读:
    JSON字符串转对象,List集合,需要的jar 包
    VirtualBox 更改虚拟磁盘大小
    SpringBoot webSocket 发送广播、点对点消息,Android接收
    window系统下添加 glassfish 的系统服务
    idea把java web项目打成war包
    栈类型数据的运用
    leetcode实践:找出两个有序数组的中位数
    leetcode实践:通过链表存储两数之和
    通过监控Nginx日志来实时屏蔽高频恶意访问的IP
    Java版分布式ID生成器技术介绍
  • 原文地址:https://www.cnblogs.com/james1207/p/3301705.html
Copyright © 2011-2022 走看看