EDP_PD
2018-12-20 23:04安卓计算器中加入连续计算功能如何实现
package com.lianghe.caculator;
import android.app.Activity;
import android.os.Bundle;
import android.text.InputType;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnLongClickListener;
import android.view.View.OnTouchListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import com.lianghe.tools.Arith;
public class CaculatorActivity extends Activity implements OnTouchListener,
OnLongClickListener {
private EditText et;
private String operator = "";// 操作
private String oldText = "";
private boolean inputDone = true;
private String operatorNumber = "";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
et = (EditText) findViewById(R.id.tv_result);
Button CEbton = (Button) findViewById(R.id.btnCE);
Button delBtn = (Button) findViewById(R.id.btnDel);
delBtn.setOnLongClickListener(this);
CEbton.setOnLongClickListener(this);
et.setOnTouchListener(this);
}
public void onButtonClickHandler(View view) {
Button button = (Button) view;
if ("del".equals(button.getText())) {
String s = String.valueOf(et.getText());
if (s.length() > 0) {
if (s.length() == 1) {
clear("0");
} else {
et.setText(s.subSequence(0, s.length() - 1));
}
operatorNumber = et.getText().toString();
}
}
else if("CE".equals(button.getText())){
clear("0");
}
else if ("+".equals(button.getText()) || "-".equals(button.getText())
|| "*".equals(button.getText()) || "÷".equals(button.getText())
|| "=".equals(button.getText())) {
caculate();// 计算
operator = button.getText().toString();// 操作符
oldText = et.getText().toString();
inputDone = true;
} else {
if (inputDone) {
et.setText(button.getText().toString());
inputDone = false;
} else {
et.append(button.getText().toString());
}
operatorNumber = et.getText().toString();
}
et.requestFocus(TextView.FOCUS_RIGHT);
}
private void caculate() {
if ("+".equals(operator)) {
et.setText(String.valueOf(Arith.add(oldText, operatorNumber)));
} else if ("-".equals(operator)) {
et.setText(String.valueOf(Arith.sub(oldText, operatorNumber)));
} else if ("*".equals(operator)) {
et.setText(String.valueOf(Arith.mul(oldText, operatorNumber)));
} else if ("÷".equals(operator)) {
if ("0".equals(operatorNumber)) {
clear("被除数不能为零");
} else {
et.setText(String.valueOf(Arith.div(oldText, operatorNumber)));
}
}
}
private void clear(String text) {
et.setText(text);
operator = "";
oldText = "";
operatorNumber = "";
inputDone = true;
}
@Override
public boolean onTouch(View view, MotionEvent event) {
et.setInputType(InputType.TYPE_NULL);
return false;
}
@Override
public boolean onLongClick(View v) {
clear("0");
return false;
}
}
- 点赞
- 回答
- 收藏
- 复制链接分享
0条回答
为你推荐
- 简单写了一个Android计算器,事件处理代码一团糟,该如何优化?
- android
- 0个回答
- 求一个MFC四则运算有优先级的计算器
- 四则运算
- 计算器
- c++
- 优先级
- mfc
- 3个回答
- java的GUI中的计算器界面
- 界面
- java
- gui
- 1个回答
- java制作计算器功能遇到的问题
- java
- 9个回答
- 怎么实现类似计算器的那种语音按键的提示的效果呢?
- 1个回答
换一换