Android-CheckBox 实现计算器

源码下载地址:http://download.csdn.net/detail/wu20093346/7718055

使用CheckBox的OnCheckedChangeListener做事件触发,效果图:

 list=new OnKeyListener() {

 @Override
 public boolean onKey(View v, int keyCode, KeyEvent event) {
 // TODO Auto-generated method stub
 if(mBox1.isChecked())
 {
     mBox1.setChecked(false);
 }
 if(mBox2.isChecked())
 {
     mBox2.setChecked(false);
 }
 if(mBox3.isChecked())
 {
     mBox3.setChecked(false);
 }
 if(mBox4.isChecked())
 {
     mBox4.setChecked(false);
 }

 return false;
 }
 };
 mEditText.setOnKeyListener(list);
 mEditText1.setOnKeyListener(list);

如代码所写。每当用户又一次输入数字后。就会激发文本框的onKey事件,让全部的CheckBox变成不选中状态。

 listner=new OnCheckedChangeListener() {

 @Override
 public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
 // TODO Auto-generated method stub
 switch (buttonView.getId()) {
 case R.id.Plus:
 if(!isEmpty(mEditText,mEditText1))
 {
 Confirm();
 mBox1.setChecked(false);
 return;
 }
 break;
 case R.id.Cut:
 if(!isEmpty(mEditText,mEditText1))
 {
 Confirm();
 mBox2.setChecked(false);
 return;
 }
 break;
 case R.id.Ride:
 if(!isEmpty(mEditText,mEditText1))
 {
 Confirm();
 mBox3.setChecked(false);
 return;
 }
 break;
 case R.id.Except:
 if(!isEmpty(mEditText,mEditText1))
 {
 Confirm();
 mBox4.setChecked(false);
 return;
 }
 break;
 default:
 break;
 }

 if(mBox1.isChecked())
 {
 mTextView.setText( GetOperation("+"));
 }
 else
 {
 mTextView.setText("");
 }
 if(mBox2.isChecked())
{
mTextView2.setText(GetOperation("-"));
 }
 else
{
 mTextView2.setText("");
 }
 if(mBox3.isChecked())
 {
 mTextView3.setText(GetOperation("*"));
 }
 else
 {
 mTextView3.setText("");
 }
 if(mBox4.isChecked())
 {
 mTextView4.setText(GetOperation("/"));
 }
 else
 {
 mTextView4.setText("");
 }
 }
 };
 mBox1.setOnCheckedChangeListener(listner);
 mBox2.setOnCheckedChangeListener(listner);
 mBox3.setOnCheckedChangeListener(listner);
 mBox4.setOnCheckedChangeListener(listner);

依据选择的checkbox返回计算结果,假设uncheck将清空文本,选择checkbox之前必需要输入两个数字。

所有代码:

 package cn.terry;

import android.app.Activity;
 import android.app.AlertDialog;
 import android.content.DialogInterface;
 import android.os.Bundle;
 import android.view.KeyEvent;
 import android.view.View;
 import android.view.View.OnKeyListener;
 import android.widget.*;
 import android.widget.CompoundButton.OnCheckedChangeListener;
 public class CheckBoxCalc extends Activity {
 private TextView mTextView;
 private TextView mTextView2;
 private TextView mTextView3;
 private TextView mTextView4;
 private CheckBox mBox1;
 private CheckBox mBox2;
 private CheckBox mBox3;
 private CheckBox mBox4;
 private EditText mEditText;
 private EditText mEditText1;
 private boolean isbool=true;
 private OnCheckedChangeListener listner;
 private Float Temp;
 private String Experssion;
 private OnKeyListener list;
 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.main);
 mTextView=(TextView)findViewById(R.id.result1);
 mTextView2=(TextView)findViewById(R.id.result2);
 mTextView3=(TextView)findViewById(R.id.result3);
 mTextView4=(TextView)findViewById(R.id.result4);
 mBox1=(CheckBox)findViewById(R.id.Plus);  //加減乘除
 mBox2=(CheckBox)findViewById(R.id.Cut);
 mBox3=(CheckBox)findViewById(R.id.Ride);
 mBox4=(CheckBox)findViewById(R.id.Except);
 mEditText=(EditText)findViewById(R.id.first);
mEditText1=(EditText)findViewById(R.id.second);
 list=new OnKeyListener() {

 @Override
 public boolean onKey(View v, int keyCode, KeyEvent event) {
 // TODO Auto-generated method stub
 if(mBox1.isChecked())
 {
 mBox1.setChecked(false);
 }
if(mBox2.isChecked())
 {
 mBox2.setChecked(false);
 }
 if(mBox3.isChecked())
 {
 mBox3.setChecked(false);
}
 if(mBox4.isChecked())
 {
 mBox4.setChecked(false);
 }

 return false;
 }
 };
 mEditText.setOnKeyListener(list);
mEditText1.setOnKeyListener(list);

 listner=new OnCheckedChangeListener() {

 @Override
 public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
 // TODO Auto-generated method stub
 switch (buttonView.getId()) {
 case R.id.Plus:
 if(!isEmpty(mEditText,mEditText1))
 {
 Confirm();
 mBox1.setChecked(false);
 return;
 }
 break;
 case R.id.Cut:
 if(!isEmpty(mEditText,mEditText1))
 {
 Confirm();
 mBox2.setChecked(false);
 return;
 }
 break;
 case R.id.Ride:
if(!isEmpty(mEditText,mEditText1))
 {
 Confirm();
 mBox3.setChecked(false);
 return;
 }
 break;
 case R.id.Except:
 if(!isEmpty(mEditText,mEditText1))
 {
 Confirm();
 mBox4.setChecked(false);
 return;
 }
 break;
 default:
 break;
 }

 if(mBox1.isChecked())
 {
 mTextView.setText( GetOperation("+"));
 }
 else
 {
 mTextView.setText("");
 }
 if(mBox2.isChecked())
 {
 mTextView2.setText(GetOperation("-"));
 }
 else
 {
 mTextView2.setText("");
 }
 if(mBox3.isChecked())
 {
 mTextView3.setText(GetOperation("*"));
 }
 else
 {
 mTextView3.setText("");
 }
 if(mBox4.isChecked())
 {
 mTextView4.setText(GetOperation("/"));
 }
 else
 {
 mTextView4.setText("");
 }
 }
 };
 mBox1.setOnCheckedChangeListener(listner);
 mBox2.setOnCheckedChangeListener(listner);
 mBox3.setOnCheckedChangeListener(listner);
mBox4.setOnCheckedChangeListener(listner);

 }
 public String GetOperation(String Operation)
{
 if(Operation=="+")
 {
 Temp=Float.parseFloat(mEditText.getText().toString())+
 Float.parseFloat(mEditText1.getText().toString());

 }
if(Operation=="-")
{
 Temp=Float.parseFloat(mEditText.getText().toString())-
 Float.parseFloat(mEditText1.getText().toString());

 }
 if(Operation=="*")
 {
 Temp=Float.parseFloat(mEditText.getText().toString())*
 Float.parseFloat(mEditText1.getText().toString());
 }
 if(Operation=="/")
 {
 Temp=Float.parseFloat(mEditText.getText().toString())/
 Float.parseFloat(mEditText1.getText().toString());
 }
 Experssion=mEditText.getText().toString()+Operation+mEditText1.getText().toString()
 +"="+Temp.toString();
 return Experssion;
 }

public void Confirm()
{
 new AlertDialog.Builder(CheckBoxCalc.this)
 .setTitle("alert")
 .setMessage("can not be null")
 .setPositiveButton("OK", new DialogInterface.OnClickListener() {

 @Override
 public void onClick(DialogInterface dialog, int which) {
 // TODO Auto-generated method stub

}
 })
 .create().show();
 }
 public boolean isEmpty(EditText e,EditText a)
{
     if(e.getText().toString().length()>0 && a.getText().toString().length()>0)
     {
         isbool= true;
     }
     else
     {
         isbool=false;
     }
 return isbool;
 } }
时间: 2024-07-29 21:16:35

Android-CheckBox 实现计算器的相关文章

android checkbox 小记

? 1 2 3 4 5 6 7 <CheckBox      android:id="@+id/cbCheckBox"      android:layout_width="0px"      android:layout_height="wrap_content"      android:layout_weight="1"      android:button="@drawable/checkbox_ch

android checkBox背景样式及用颜色值实现按钮点击效果

1  使用颜色值(不使用图片)来实现按钮的点击效果: color.xml <color name="head_color">#836FFF</color> <color name="information_title_color">#666666</color> <color name="list_bg_color">#FFF4F4F4</color> <color n

android checkbox样式

1. 首先要导入你准备用作CheckBox选中和补选中状态的两图片到res的drawable中,如checkbox_checked.png,checkbox_normal.png: 2. 在res/drawable中添加checkbox.xml,定义checkbox的state list drawable图片 [html] view plaincopy <?xml version="1.0" encoding="UTF-8"?> <selector

android CheckBox控件的定义及事件监听

http://www.beijibear.com/index.php?aid=336 android CheckBox控件的定义及事件监听,本例实现CheckBox控件的定义及点击事件的监听并显示结果,运行效果截图如下: CheckBox控件的定义,main.xml内容如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas

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

菜鸟瞎搞,高手莫进 本人菜鸟一枚,最近在学Android编程,网上看了一些视频教程,于是想着平时手机上的计算器应该很简单,自己何不尝试着做一个呢? 于是就冒冒失失的开撸了. 简单计算器嘛,功能当然很少,加减乘除就可以. 第一步:设计布局文件 界面如下图: 由于刚开始学Android,对布局文件也不是很了解,边查边找,最后凑合着写好了布局文件. 注意事项:此布局文件用到了GridLayout布局,是在Android4.0以上才出现的(不知道谷歌有没有开发相应的包来适配4.0以下版本). 有关Gri

基于android的简单计算器

一.计算器布局 <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" andr

Android checkbox和radiobutton 以及Toast和AlertDialog的使用

package com.example.radiobutton_01; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.Toast; publi

android CheckBOx的使用与监听

activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent

android checkbox 扩大点击区域

有效的实现方式:  <CheckBox             android:id="@+id/cb_market_car_selection"             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:button="@null"       

Android checkbox和text间隔设置

改变checkbox默认的文字与选框之间的距离两种方案,刚开始接触checkbox 的由于不熟悉控件,使用了组合控件:一个未设定text的CheckBox和一个TextView来达到目的.后来发现只需要设定CheckBox的android:paddinLeft的值即可