自己做的简单计算器。
老规矩。右键取得图片地址,利用下载工具下载这个显示不出来的图片。后缀改为rar即可得到源代码项目。
就一个activity
package zhang.calculator;
import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.os.Vibrator;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class MyCalculator extends Activity {
private Vibrator vibrator;
private Double num_a;
private Double num_b;
private TextView text = null;
private String temp = null;// 计算符号
private boolean isDot = true;// 小数点控制
private boolean clickable = true;// 标志是否按过计算按钮
private double memoryd; // 使用内存中存储的数字
private int memoryi;
private TextView lable=null;
private boolean isVib=true;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.calculator_main);
final Button num1 = (Button) findViewById(R.id.num1);
final Button num2 = (Button) findViewById(R.id.num2);
final Button num3 = (Button) findViewById(R.id.num3);
final Button num4 = (Button) findViewById(R.id.num4);
final Button num5 = (Button) findViewById(R.id.num5);
final Button num6 = (Button) findViewById(R.id.num6);
final Button num7 = (Button) findViewById(R.id.num7);
final Button num8 = (Button) findViewById(R.id.num8);
final Button num9 = (Button) findViewById(R.id.num9);
Button num0 = (Button) findViewById(R.id.zero);
Button point=(Button) findViewById(R.id.point);
Button mul=(Button)findViewById(R.id.mul);
Button sub=(Button)findViewById(R.id.sub);
Button add=(Button)findViewById(R.id.add);
Button div=(Button)findViewById(R.id.div);
Button sqrt=(Button)findViewById(R.id.sqrt);
Button equal=(Button) findViewById(R.id.equal);
Button c=(Button) findViewById(R.id.clear);
Button cm=(Button)findViewById(R.id.clearm);
Button m=(Button)findViewById(R.id.memory);
Button tf=(Button)findViewById(R.id.tf);
Button mshow=(Button)findViewById(R.id.showmemory);
Button back=(Button)findViewById(R.id.back);
text = (TextView) findViewById(R.id.showText);
lable = (TextView) findViewById(R.id.lable);
vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
//0
num0.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
zd();
if(text.getText().toString().equalsIgnoreCase("0")){
}else{
if (clickable == false) {
text.setText("");
text.setText(text.getText().toString()+"0");
clickable = true;
} else {
text.setText(text.getText().toString()+"0");
}
}
}
});
//1
num1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
show(num1.getText().toString());
}
});
// 2
num2.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
show(num2.getText().toString());
}
});
// 3
num3.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
show(num3.getText().toString());
}
});
// 4
num4.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
show(num4.getText().toString());
}
});
// 5
num5.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
show(num5.getText().toString());
}
});
// 6
num6.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
show(num6.getText().toString());
}
});
// 7
num7.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
show(num7.getText().toString());
}
});
// 8
num8.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
show(num8.getText().toString());
}
});
// 9
num9.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
show(num9.getText().toString());
}
});
//.
point.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
zd();
if(text.getText().toString().equalsIgnoreCase("")){
}else{
if (text.getText().toString()!=""&&isDot == true) {
text.setText(text.getText()+".");
isDot = false;
}else{
text.setText(text.getText().toString());
}
}
}
});
//加
add.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
zd();
if(text.getText().toString().equalsIgnoreCase("")){
}else{
if (text.getText() != null){
num_a =Double.parseDouble(text.getText().toString());
temp = "add";
clickable = false;
isDot=true;
lable.setText("+");
}
}
}
});
//减
sub.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
zd();
if(text.getText().toString().equalsIgnoreCase("")){
}else{
if (text.getText() != null){
num_a =Double.parseDouble(text.getText().toString());
temp = "sub";
clickable = false;
lable.setText("—");
}else{
text.setText("—");
}
isDot=true;
}
}
});
//乘
mul.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
zd();
if(text.getText().toString().equalsIgnoreCase("")){
}else{
if (text.getText() != null){
num_a =Double.parseDouble(text.getText().toString());
temp = "mul";
lable.setText("×");
clickable = false;
isDot=true;
}
}
}
});
// 除
div.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
zd();
if(text.getText().toString().equalsIgnoreCase("")){
}else{
if (text.getText() != null){
num_a =Double.parseDouble(text.getText().toString());
temp = "div";
lable.setText("÷");
clickable = false;
isDot=true;
}
}
}
});
//开方
sqrt.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
zd();
if(text.getText().toString().equalsIgnoreCase("")){
}else{
String s = text.getText().toString();
if (s.charAt(0) == '-') {
Toast.makeText(MyCalculator.this, "负数不能开根号!!",Toast.LENGTH_SHORT).show();
clickable = false;
} else {
text.setText(Double.toString(java.lang.Math.sqrt(Double.parseDouble(text.getText().toString()))));
lable.setText("√");
clickable = false;
}
}
}
});
//等于
equal.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
zd();
if (temp != null && text.getText() != null){
num_b = (Double.parseDouble(text.getText().toString()));
if (temp == "add"){
text.setText(Float.toString((float) (num_a + num_b)));
temp = null;
}else if (temp == "sub"){
text.setText(Float.toString((float) (num_a - num_b)));
temp = null;
}else if (temp == "mul"){
text.setText(Float.toString((float) (num_a * num_b)));
temp = null;
}else if (temp == "div"){
text.setText(Float.toString((float) (num_a / num_b)));
temp = null;
}
clickable = false;
if(text.getText().toString()==""){
isDot =true;
}else{
isDot =false;
}
}
}
});
//c
c.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
zd();
text.setText("");
lable.setText("");
num_a = 0.0;
temp = null;
clickable = false;
isDot = true;
}
});
//cm
cm.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
zd();
memoryd = memoryi = 0;
}
});
//m
m.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
zd();
if (text.getText().toString() != " "){
boolean isDot = false;
for (int i = 0; i < text.getText().length(); i++){
if ('.' == text.getText().charAt(i)) {
isDot = true;
break;
}
}
if(text.getText().toString().equalsIgnoreCase("")){
memoryd = memoryi = 0;
}
else{
if (isDot == true) {
memoryd = Double.parseDouble(text.getText().toString());
memoryi = 0;
}
else {
memoryi = Integer.parseInt(text.getText().toString());
memoryd = 0;
}
}
clickable = false;
}
}
});
//ms
mshow.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
zd();
if (memoryd != 0) {
text.setText(Double.toString(memoryd));
}
if (memoryi != 0) {
text.setText(Integer.toString(memoryi));
}
clickable = false;
}
});
//取反
tf.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
zd();
if(text.getText().toString().equalsIgnoreCase("")){
}else{
boolean isNumber = true;
String s = text.getText().toString();
for (int i = 0; i < s.length(); i++)
if (!(s.charAt(i) >= '0' && s.charAt(i) <= '9'
|| s.charAt(i) == '.' || s.charAt(i) == '-')) {
isNumber = false;
break;
}
if (isNumber == true) {
//如果当前字符串首字母有'-'号,代表现在是个负数,再按下时,则将首符号去掉
if (s.charAt(0) == '-') {
text.setText("");
for (int i = 1; i < s.length(); i++) {
char a = s.charAt(i);
text.setText(text.getText().toString() + a);
}
}
//如果当前字符串第一个字符不是符号,则添加一个符号在首字母处
else
text.setText('-' + s);
}
}}
});
//back
back.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
zd();
if(clickable == true)
if (text.getText().toString() != "") {
String s = text.getText().toString();
text.setText("");
for (int i = 0; i < s.length() - 1; i++) {
char a = s.charAt(i);
text.setText(text.getText().toString() + a);
}
}
}
});
}
public void zd(){ //振动的方法
if(isVib==true){
long[] pattern = {0, 20, 0, 10}; // OFF/ON/OFF/ON...
vibrator.vibrate(pattern, -1);
}else{
vibrator.cancel();
}
}
public void show(String i){ //1-9的数
zd();
if (clickable == false) {
text.setText("");
text.setText(text.getText() + i);
clickable = true;
} else {
text.setText(text.getText() + i);
}
}
public boolean onCreateOptionsMenu(Menu menu) { //添加菜单
// TODO Auto-generated method stub
menu.add(0, 1, 1,R.string.exit);
menu.add(0, 2, 2, R.string.about);
menu.add(1,3,3,"开/关震动");
return super.onCreateOptionsMenu(menu);
}
public boolean onOptionsItemSelected(MenuItem item) { //设置菜单事件
switch(item.getItemId()){
case 1:
finish();
break;
case 2:
AlertDialog.Builder dialog = new AlertDialog.Builder(this);
dialog.setTitle("关于").setMessage("This is a black cool convenient calculator!\nBy:没落凄凉").show();
break;
case 3:
if(isVib){
isVib=false;
}else{
isVib=true;
}
}
return super.onOptionsItemSelected(item);
}
}
布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_height="fill_parent"
android:layout_width="fill_parent">
<TextView
android:id="@+id/lable" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="right" android:singleLine="true" android:scrollHorizontally="true" android:background="@color/black" android:textColor="@color/write" android:layout_margin="5dip" android:layout_marginBottom="5dip"
/>
<TextView
android:id="@+id/showText" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="right" android:textSize="33dip" android:singleLine="true" android:scrollHorizontally="true" android:background="@color/black" android:textColor="@color/write" android:bufferType="editable" android:layout_marginLeft="5dip" android:maxLength="17" android:layout_marginRight="5dip"
/>
<LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/linearLayout1" android:gravity="center" android:layout_marginTop="5dip" android:paddingTop="5dip">
<Button android:text="C" android:id="@+id/clear" android:layout_width="75dip" android:layout_height="60dip" android:textSize="45dip" android:textStyle="bold" android:gravity="center" android:background="@color/black" android:textColor="@color/write"></Button>
<Button android:text="CM" android:id="@+id/clearm" android:layout_width="75dip" android:layout_height="60dip" android:textSize="45dip" android:textStyle="bold" android:background="@color/black" android:textColor="@color/write"></Button>
<Button android:text="M" android:id="@+id/memory" android:layout_width="75dip" android:layout_height="60dip" android:textSize="45dip" android:textStyle="bold" android:background="@color/black" android:textColor="@color/write"></Button>
<Button android:text="MS" android:id="@+id/showmemory" android:layout_width="75dip" android:layout_height="60dip" android:textSize="45dip" android:textStyle="bold" android:background="@color/black" android:textColor="@color/write" ></Button>
</LinearLayout>
<LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/linearLayout1" android:gravity="center">
<Button android:text="+" android:id="@+id/add" android:layout_width="75dip" android:layout_height="60dip" android:textSize="45dip" android:textStyle="bold" android:background="@color/black" android:textColor="@color/write"></Button>
<Button android:text="-" android:id="@+id/sub" android:layout_width="75dip" android:layout_height="60dip" android:textSize="45dip" android:textStyle="bold" android:background="@color/black" android:textColor="@color/write"></Button>
<Button android:text="×" android:id="@+id/mul" android:layout_width="75dip" android:layout_height="60dip" android:textSize="45dip" android:textStyle="bold" android:background="@color/black" android:textColor="@color/write"></Button>
<Button android:text="÷" android:id="@+id/div" android:layout_width="75dip" android:layout_height="60dip" android:textSize="45dip" android:textStyle="bold" android:background="@color/black" android:textColor="@color/write"></Button>
</LinearLayout>
<LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/linearLayout1" android:gravity="center">
<Button android:text="1" android:id="@+id/num1" android:layout_width="75dip" android:layout_height="60dip" android:textSize="45dip" android:textStyle="bold" android:background="@color/black" android:textColor="@color/write"></Button>
<Button android:text="2" android:id="@+id/num2" android:layout_width="75dip" android:layout_height="60dip" android:textSize="45dip" android:textStyle="bold" android:background="@color/black" android:textColor="@color/write"></Button>
<Button android:text="3" android:id="@+id/num3" android:layout_width="75dip" android:layout_height="60dip" android:textSize="45dip" android:textStyle="bold" android:background="@color/black" android:textColor="@color/write"></Button>
<Button android:text="√" android:id="@+id/sqrt" android:layout_width="75dip" android:layout_height="60dip" android:textSize="45dip" android:textStyle="bold" android:background="@color/black" android:textColor="@color/write"></Button>
</LinearLayout>
<LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/linearLayout1" android:gravity="center">
<Button android:text="4" android:id="@+id/num4" android:layout_width="75dip" android:layout_height="60dip" android:textSize="45dip" android:textStyle="bold" android:background="@color/black" android:textColor="@color/write"></Button>
<Button android:text="5" android:id="@+id/num5" android:layout_width="75dip" android:layout_height="60dip" android:textSize="45dip" android:textStyle="bold" android:background="@color/black" android:textColor="@color/write"></Button>
<Button android:text="6" android:id="@+id/num6" android:layout_width="75dip" android:layout_height="60dip" android:textSize="45dip" android:textStyle="bold" android:background="@color/black" android:textColor="@color/write"></Button>
<Button android:text="←" android:id="@+id/back" android:layout_width="75dip" android:layout_height="60dip" android:textSize="45dip" android:textStyle="bold" android:background="@color/black" android:textColor="@color/write"></Button>
</LinearLayout>
<LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center">
<LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/linearLayout1" android:orientation="vertical" >
<Button android:text="7" android:id="@+id/num7" android:layout_width="75dip" android:layout_height="60dip" android:textSize="45dip" android:textStyle="bold" android:background="@color/black" android:textColor="@color/write"></Button>
<Button android:text="0" android:id="@+id/zero" android:layout_width="75dip" android:layout_height="60dip" android:textSize="45dip" android:textStyle="bold" android:background="@color/black" android:textColor="@color/write"></Button>
</LinearLayout>
<LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/linearLayout1" android:orientation="vertical" >
<Button android:text="8" android:id="@+id/num8" android:layout_width="75dip" android:layout_height="60dip" android:textSize="45dip" android:textStyle="bold" android:background="@color/black" android:textColor="@color/write"></Button>
<Button android:text="+/-" android:id="@+id/tf" android:layout_width="75dip" android:layout_height="60dip" android:textSize="45dip" android:textStyle="bold" android:background="@color/black" android:textColor="@color/write"></Button>
</LinearLayout>
<LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/linearLayout1" android:orientation="vertical" >
<Button android:text="9" android:id="@+id/num9" android:layout_width="75dip" android:layout_height="60dip" android:textSize="45dip" android:textStyle="bold" android:background="@color/black" android:textColor="@color/write"></Button>
<Button android:text="." android:id="@+id/point" android:layout_width="75dip" android:layout_height="60dip" android:textSize="45dip" android:textStyle="bold" android:gravity="center" android:background="@color/black" android:textColor="@color/write"></Button>
</LinearLayout>
<LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/linearLayout1" android:orientation="vertical" >
<Button android:text="=" android:id="@+id/equal" android:layout_width="75dip" android:layout_height="120dip" android:textSize="50dip" android:textStyle="bold" android:background="@color/black" android:textColor="@color/write"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>