android 自定義監聽器Listening


在android中有許多控件,如TextView、Button等。他們大多都有監聽器,如View類下的單擊監聽,按鍵監聽等等

有沒有想過自己定義一個監聽呢?

1.用關鍵字interface定義接口OnTestListening,通過關鍵字implements來聲明接口;

 在接口中我們可以定義接口函數,用來以后監聽時重寫,可以定義好多,這里我只定義一個;

 在類中定義一個公共函數用於設置監聽;

   具體看以下代碼:

1     public interface OnTestListening{
2         void TestListening(int i);
3     }
4     
5     OnTestListening mOnTestListening=null;
6     public void setOnTestListening(OnTestListening e){
7         mOnTestListening=e;
8     }

2.為了監聽的實現,我們需要監聽到的信息進行掃描,這時我們就用到了定時器,它能夠按一定時間執行一次Handler;

 1     Timer mTimer=new Timer();
 2     TimerTask task=new TimerTask(){
 3 
 4         @Override
 5         public void run() {
 6             // TODO Auto-generated method stub
 7               Message message = new Message();
 8                 
 9               handler.sendMessage(message);
10              
11         }
12         
13     };
14     Handler handler=new Handler(){
15 
16         @Override
17         public void handleMessage(Message msg) {
18             // TODO Auto-generated method stub
19             if(mOnTestListening!=null){
20                 mOnTestListening.TestListening(0);
21             }
22             
23             super.handleMessage(msg);
24         }
25         
26     };

3.在類中定義一個共有函數run(),用於啟動類中的定時器;

1     public void run(){
2         mTimer.schedule(task, 5000,5000);//每五秒執行一次handler
3     }


 

全部源代碼:

監聽類TestA:

package ccit.qrs101;

import java.util.Timer;
import java.util.TimerTask;



import android.os.Handler;
import android.os.Message;
public class testA {
    Timer mTimer=new Timer();
    TimerTask task=new TimerTask(){

        @Override
        public void run() {
            // TODO Auto-generated method stub
              Message message = new Message();
                
              handler.sendMessage(message);
             
        }
        
    };
    Handler handler=new Handler(){

        @Override
        public void handleMessage(Message msg) {
            // TODO Auto-generated method stub
            if(mOnTestListening!=null){
                mOnTestListening.TestListening(0);
            }
            
            super.handleMessage(msg);
        }
        
    };
    public void run(){
        mTimer.schedule(task, 5000,5000);//每五秒執行一次handler
    }
    public interface OnTestListening{
        void TestListening(int i);
    }
    
    OnTestListening mOnTestListening=null;
    public void setOnTestListening(OnTestListening e){
        mOnTestListening=e;
    }
}

Activity:

package ccit.qrs101;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

public class TestActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        testA mtestA=new testA();
        mtestA.run();
        mtestA.setOnTestListening(new testA.OnTestListening() {
            
            @Override
            public void TestListening(int i) {
                // TODO Auto-generated method stub
                //Toast.makeText(TestActivity.this, "監聽成功!!!", 1000).show();   
                new AlertDialog.Builder(TestActivity.this)
                .setTitle("信息提示")
                .setMessage("監聽成功!!!")
                .setPositiveButton("OK", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // TODO Auto-generated method stub
                        
                    }
                    
                
                })
                .create()
                .show();
            }
        });
    }
}

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM