Android 同时实现View的单击和双击监听事件

接到一个新需求,要求实现控件 RecyclerView 的 item 的单击和双击事件的监听,

开始时候通过实现 OnTouchListener 监听实现了需求,点击是没有问题的,

可是测试时候发现 RecyclerView 滑动的时候就也会触发这个点击事件,

应该是我没处理事件的结果.后来索性查资料换个了方法,直接实现OnClickListener

监听改变一下.就不会有这个问题了. 用法和正常的点击监听相同,实现回调就好.

以下代码:

public class DoubleClickListener implements View.OnClickListener {
    //记录连续点击次数
    private int clickCount = 0;
    private Handler handler;
    private DoubleClickCallBack myClickCallBack;

    public interface DoubleClickCallBack {
        //点击一次的回调
        void oneClick(View view);

        //连续点击两次的回调
        void doubleClick(View view);

    }

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

    @Override
    public void onClick(View v) {
        clickCount++;
        //双击间二百毫秒延时
        int timeout = 200;
        handler.postDelayed(() -> {
            if (clickCount == 1) {
                myClickCallBack.oneClick(v);
            } else if (clickCount == 2) {
                myClickCallBack.doubleClick(v);
            }
           //清空handler延时,并防内存泄漏
            handler.removeCallbacksAndMessages(null);
            //计数清零
            clickCount = 0;
        }, timeout);//延时timeout后执行run方法中的代码
    }
}

参考文章:https://blog.csdn.net/htwhtw123/article/details/80150984

希望能对大家有所帮助,欢迎大家一起讨论交流。

image

你可能感兴趣的:(Android 同时实现View的单击和双击监听事件)