Android 小項目之---- 計算器 使用同一個事件监听完成 加减乘除 (附源码)

  这个小项目除了要我们活用按钮的组之外,也示范如何利用同一个监听处理不同事件然后与TextView的文字作出相應的變化

  廢話不多說:效果圖如下:

  看到這個界面可能最直接的處理辦法就是每一個按鈕設置一個監聽事件然後在每一個事件上處理即可,沒錯。這個辦法是可行的

  但最后我們看到的代碼是不是很不優雅,有很多重複的操作?所以我們想到了用一個监听来处理不同的事件。那要怎么做呢?跟着我一起来做吧

大概代码如下:声明一个点击的监听事件

private  OnClickListener listener;

 

 

ExpandedBlockStart.gif 代码
 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);

 

 

代碼裏面也順便封裝了彈出提出框代碼如下:

 

ExpandedBlockStart.gif 代码
 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      }

 

檢查文本框是否為空的方法

 

ExpandedBlockStart.gif 代码
 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

如有不明:QQ 285735942  或Email:terryyhl@gmail.com

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值