這個小項目除了要我們活用按鈕的組之外,也示范如何利用同一個監聽處理不同事件然後與TextView的文字作出相應的變化
廢話不多說:效果圖如下:
看到這個界面可能最直接的處理辦法就是每一個按鈕設置一個監聽事件然後在每一個事件上處理即可,沒錯。這個辦法是可行的
但最後我們看到的代碼是不是很不優雅,有很多重複的操作?所以我們想到了用一個監聽來處理不同的事件。那要怎麼做呢?跟著我一起來做吧
大概代碼如下:聲明一個點擊的監聽事件
private OnClickListener listener;
1 listener= new OnClickListener() {
2
3 @Override
4 public void onClick(View v) {
5 // TODO Auto-generated method stub
6 switch (v.getId()) {
7 case R.id.Button01:
8 if(isEmpty(mEditText1,mEditText2)==false)
9 {
10 Confirm().show();
11 return;
12 }
13 mTextView1.setText(" ");
14 StrTemp=Float.toString((Float.parseFloat(mEditText1.getText().toString())
15 (Float.parseFloat(mEditText2.getText().toString()))));
16 mTextView2.setText(StrTemp);
17 break;
18 case R.id.Button02:
19 if(isEmpty(mEditText1,mEditText2)==false)
20 {
21 Confirm().show();
22 return;
23 }
24 mTextView1.setText("-");
25 StrTemp=Float.toString((Float.parseFloat(mEditText1.getText().toString())-
26 (Float.parseFloat(mEditText2.getText().toString()))));
27 mTextView2.setText(StrTemp);
28 break;
29 case R.id.Button03:
30 if(isEmpty(mEditText1,mEditText2)==false)
31 {
32 Confirm().show();
33 return;
34 }
35 mTextView1.setText("*");
36 StrTemp=Float.toString((Float.parseFloat(mEditText1.getText().toString())*
37 (Float.parseFloat(mEditText2.getText().toString()))));
38 mTextView2.setText(StrTemp);
39 break;
40 case R.id.Button04:
41 if(isEmpty(mEditText1,mEditText2)==false)
42 {
43 Confirm().show();
44 return;
45 }
46 mTextView1.setText("/");
47 StrTemp=Float.toString((Float.parseFloat(mEditText1.getText().toString())/
48 (Float.parseFloat(mEditText2.getText().toString()))));
49 mTextView2.setText(StrTemp);
50 break;
51 default:
52 break;
53 }
54 }
55 };
代碼簡單明了,通過getid()這個方法可以得到相應的按鈕,之後處理。OK 代碼大致上是這樣,之後設置按鈕的單擊事件
mButton1.setOnClickListener(listener);
mButton2.setOnClickListener(listener);
mButton3.setOnClickListener(listener);
mButton4.setOnClickListener(listener);
代碼裏面也順便封裝了彈出提出框代碼如下:
1 public AlertDialog Confirm()
2 {
3
4 alert=new AlertDialog.Builder(SimpleCalc.this)
5 .setTitle(R.string.confirm)
6 .setMessage(R.string.content)
7 .setPositiveButton(R.string.OK, new DialogInterface.OnClickListener() {
8
9 @Override
10 public void onClick(DialogInterface dialog, int which) {
11 // TODO Auto-generated method stub
12
13 }
14 })
15 .create();
16
17 return alert;
18 }
檢查文本框是否為空的方法
代碼
1 public boolean isEmpty(EditText e,EditText a)
2 {
3 if(e.getText().toString().length()>0 && a.getText().toString().length()>0)
4 {
5 isbool= true;
6 }
7 else
8 {
9 isbool=false;
10 }
11 return isbool;
12 }
到此為止一個簡單的計算器己經完成,下次我們將把按鈕全都放在屏幕 上再利用事件傳遞的方法來完成 ,通過點擊按鈕數字來計算,相信有看到這一篇的朋友知道
應該知道怎麼做了。
未完待續。。。。
源碼:點擊下載:/Files/TerryBlog/SimpleCalc.rar