在家里自学了一段时间android,看完郭霖大神的《第一行代码》收获颇多,忍不住自己试了一下。
下面是我做好的界面,因为不涉及使用,练手的,比较粗糙,处女座的请绕行。
以上实现了加减乘除运算,还有清除,切换正负(+/_),百分号等功能。
代码如下:
public class MainActivity extends Activity { boolean isClickEqu=false; double calResult; int op=0; double num1=0,num2=0; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.ac).setOnClickListener(new MyClickListener()); findViewById(R.id.fold).setOnClickListener(new MyClickListener()); findViewById(R.id.percent).setOnClickListener(new MyClickListener()); findViewById(R.id.seven).setOnClickListener(new MyClickListener()); findViewById(R.id.eight).setOnClickListener(new MyClickListener()); findViewById(R.id.nine).setOnClickListener(new MyClickListener()); findViewById(R.id.four).setOnClickListener(new MyClickListener()); findViewById(R.id.five).setOnClickListener(new MyClickListener()); findViewById(R.id.six).setOnClickListener(new MyClickListener()); findViewById(R.id.one).setOnClickListener(new MyClickListener()); findViewById(R.id.two).setOnClickListener(new MyClickListener()); findViewById(R.id.three).setOnClickListener(new MyClickListener()); findViewById(R.id.zero).setOnClickListener(new MyClickListener()); findViewById(R.id.plus).setOnClickListener(new MyClickListener()); findViewById(R.id.minus).setOnClickListener(new MyClickListener()); findViewById(R.id.mul).setOnClickListener(new MyClickListener()); findViewById(R.id.div).setOnClickListener(new MyClickListener()); findViewById(R.id.equal).setOnClickListener(new MyClickListener()); findViewById(R.id.point).setOnClickListener(new MyClickListener()); } class MyClickListener implements OnClickListener { public void onClick (View view){ EditText txt=(EditText)findViewById(R.id.edit_text); switch (view.getId()) { case R.id.ac: txt.setText(""); break; case R.id.fold: double strF; strF = Double.valueOf(txt.getText().toString()); strF = -strF; String str = String.valueOf(strF); txt.setText(str); break; case R.id.percent: String strP = txt.getText().toString(); double strP1; strP1 = Double.valueOf(strP); double strP2 = strP1 * 0.01; strP = String.valueOf(Double.valueOf(strP2)); txt.setText(strP); break; case R.id.seven: inPut("7"); break; case R.id.eight: inPut("8"); break; case R.id.nine: inPut("9"); break; case R.id.four: inPut("4"); break; case R.id.five: inPut("5"); break; case R.id.six: inPut("6"); break; case R.id.one: inPut("1"); break; case R.id.two: inPut("2"); break; case R.id.three: inPut("3"); break; case R.id.zero: inPut("0"); break; case R.id.plus: String strPl = txt.getText().toString(); if (strPl.equals(null)) { return; } num1 = Double.valueOf(strPl); txt.setText(null); op = 1; isClickEqu = false; break; case R.id.minus: String strm = txt.getText().toString(); if (strm.equals(null)) { return; } num1 = Double.valueOf(strm); txt.setText(null); op = 2; isClickEqu = false; break; case R.id.mul: String strmu = txt.getText().toString(); if (strmu.equals(null)) { return; } num1 = Double.valueOf(strmu); txt.setText(null); op = 3; isClickEqu = false; break; case R.id.div: String strd = txt.getText().toString(); if (strd.equals(null)) { return; } num1 = Double.valueOf(strd); txt.setText(null); op = 4; isClickEqu = false; break; case R.id.point: if (isClickEqu) { txt.setText(null); isClickEqu = false; } String strPO = txt.getText().toString() + "."; txt.setText(strPO); break; case R.id.equal: String strBefore = txt.getText().toString(); if (strBefore.equals(null)) { return; } num2 = Double.valueOf(strBefore); switch (op) { case 0: calResult = num2; break; case 1: calResult = num1 + num2; break; case 2: calResult = num1 - num2; break; case 3: calResult = num1 * num2; break; case 4: calResult = num1 / num2; break; default: calResult = 0; break; } txt.setText(String.valueOf(calResult)); isClickEqu = true; break; default: break; } } } public void inPut(String a){ EditText txt=(EditText)findViewById(R.id.edit_text); if(isClickEqu) { txt.setText(null); isClickEqu=false; } String Stringa=txt.getText().toString()+a; txt.setText(Stringa); } } 这里强调OnClickListener的用法,因为相应的button较多,所以公用了响应事件。 如果是把mainactivity当作监听类,则可能造成逻辑混乱。 所以这里是新建一个类,继承OnClickListener