Android 自定義雙擊監聽

       日常開發中點擊控件經常被使用到,點擊從時間上分爲短按,長按,從次數上分爲一次或多次,常見的短按和長按,Android SDK已經自帶了,但是多次點擊,比如連續點了兩次的監聽倒是不多見,我有幸在日常工作中接觸到了這種奇葩需求,一個按鈕點了兩次才做操作,具體實現方式記錄下:

public class DoubleClickListener implements View.OnTouchListener {

    private static int timeout=400;//雙擊間四百毫秒延時
    private int clickCount = 0;//記錄連續點擊次數
    private Handler handler;
    private MyClickCallBack myClickCallBack;
    public interface MyClickCallBack{
        void oneClick();//點擊一次的回調
        void doubleClick();//連續點擊兩次的回調

    }

 public DoubleClickListener(MyClickCallBack myClickCallBack) {
        this.myClickCallBack = myClickCallBack;
        handler = new Handler();
    }

 @Override
    public boolean onTouch(View v, MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_DOWN) {
            clickCount++;
            handler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    if (clickCount == 1) {
                        myClickCallBack.oneClick();
                    }else if(clickCount==2){
                        myClickCallBack.doubleClick();
                    }
                    handler.removeCallbacksAndMessages(null);
                    //清空handler延時,並防內存泄漏
                    clickCount = 0;//計數清零
                }
          },timeout);//延時timeout後執行run方法中的代碼
        }
        return false;//讓點擊事件繼續傳播,方便再給View添加其他事件監聽
    }
}

調用方式也很簡單:

textView.setOnTouchListener(new DoubleClickListener(new DoubleClickListener.MyClickCallBack() {
                    @Override
                    public void oneClick() {
                    }
                    @Override
                    public void doubleClick() {
                    }
                }));

甚至以後要更多按監聽也能比較好擴展實現!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章