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() {
                    }
                }));

甚至以后要更多按监听也能比较好扩展实现!!

你可能感兴趣的:(android,随笔)