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;
} }
Android-CheckBox 实现计算器的更多相关文章
- xamarin android checkbox自定义样式
xamarin android checkbox自定义样式 在drawable文件在新建checkbox_bg.xml文件 <?xml version="1.0" encod ...
- android CheckBox控件的定义及事件监听
http://www.beijibear.com/index.php?aid=336 android CheckBox控件的定义及事件监听,本例实现CheckBox控件的定义及点击事件的监听并显示结果 ...
- 菜鸟学Android编程——简单计算器《一》
菜鸟瞎搞,高手莫进 本人菜鸟一枚,最近在学Android编程,网上看了一些视频教程,于是想着平时手机上的计算器应该很简单,自己何不尝试着做一个呢? 于是就冒冒失失的开撸了. 简单计算器嘛,功能当然很少 ...
- android CheckBox的运用
CheckBox定义一个同意协议的按钮,只要同意button才可以点击 XML代码 <CheckBox android:id="@+id/checkbox1" android ...
- Android checkbox 自定义点击效果
安卓默认的效果 自定义后的效果 前面的图片当然可以自己修改. 实现这个效果的步骤如下 1.建立 一个selector 的xml <?xml ver ...
- Android Checkbox Example
1. Custom String 打开 “res/values/strings.xml” 文件, File : res/values/strings.xml <?xml version=&quo ...
- Android开发之计算器(一)界面设计
计算器开发主要涉及到LinearLayout布局.EditText.Button的使用.为android入门基础内容. 打开android studio选择创建一个新的工程,应用程序的名称为Calcu ...
- Android checkBox
checkBox 状态:选中(true),未选中(false) 属性: checked="true/false"; private Chec ...
- Android checkbox和radiobutton 以及Toast和AlertDialog的使用
package com.example.radiobutton_01; import android.app.Activity; import android.os.Bundle; import an ...
- android CheckBox RadioButton 照片和文字的间距问题
利用自身的定义CheckBox 要么RadioButton时间.定义自己的图标和文字在不同的手机显示不同的音高.有时不太好控制,下面是我自己的定义CheckBox: 在Layout在下面xml: &l ...
随机推荐
- [NOIP2009] 靶形数独(搜索)
P1074 靶形数独 题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教,Z 博士 ...
- 2014 CodingTrip - 携程编程大赛 (预赛第一场)
1001: 可以证明(扩展欧几里得),只要卡片中有两个卡片互素,旁边点就是可达的. 因此只需要算出所有卡片不互素的情况有多少种,可用容斥原理. #include <cstdio> #inc ...
- 会变得ActionBar,让你的ActionBar与众不同
话不多说先看两张图: github地址:https://github.com/Smalinuxer/android-SlideActionBar 原理什么的有时间再讲,或者自行看代码; 兴许还会补充新 ...
- tomcat安装部署
1.tomcat6 下载地址 http://tomcat.apache.org/download-60.cgi 下载的话,下载那个.tar.gz后缀名的即可. 好像在 Linux.Unix上tomca ...
- 原生ajax实现方式
http://www.cnblogs.com/rubylouvre/archive/2013/01/08/2851051.html <!DOCTYPE html> <html lan ...
- “==”和Equals区别
相信很多朋友在面对,对象判等时经常会犹豫是用“==”还是Equals呢?有时候发现两者得到的结果相同,但有时候有不同, 究竟在什么情况下"==" 会相等,什么情况下Equals会不 ...
- 学习TF:《TensorFlow技术解析与实战》PDF+代码
TensorFlow 是谷歌公司开发的深度学习框架,也是目前深度学习的主流框架之一.<TensorFlow技术解析与实战>从深度学习的基础讲起,深入TensorFlow框架原理.模型构建. ...
- Mirai僵尸网络重出江湖
近年数度感染数十万台路由器的僵尸网络程序Mirai,虽然原创者已经落网判刑,但是Mirai余孽却在网络上持续变种,现在安全人员发现,Mirai已经将焦点转向Linux服务器了. 安全公司Netcout ...
- web安全:防范点击劫持的两种方式
防范点击劫持的两种方式 什么点击劫持?最常见的是恶意网站使用 <iframe> 标签把我方的一些含有重要信息类如交易的网页嵌入进去,然后把 iframe 设置透明,用定位的手段的把一些引诱 ...
- 无法在WEB服务器上启动调试
错误:站点使用 IP 地址 Visual Studio 2012 调试器尝试自动附加到正在使用 IP 地址的 Web 应用程序时,会发生该错误. 如果在 IIS 中将“网站标识”更改为“使用特定 IP ...