Android连续点击事件的实现

Android的连续点击事件的判断和响应。主要原理就是利用 有效连续点击总时间 =  连续点击次数 x 有效双击的最长时间间隔 / 2 ,利用数组拷贝左移来记录点击当时的系统时间,只要当前系统时间减去脚标为0的数组记录时间小于等于有效连续点击总时间,就算完成连续多次点击事件。

public class ViewHelper {
    private WeakReference<View> weakReference;
    public ViewHelper(View view){
        weakReference = new WeakReference<>(view);
    }

    public void multiClick(int clickCount, final IActionCallback callback){
        View view = weakReference.get();
        if (view == null) return;
        final long mHints[] = new long[clickCount];
        // 连续点击总用时 = 连续点击次数 * 有效双击最长时间间隔/2
        final long totalTime = clickCount * ViewConfiguration.getDoubleTapTimeout() / 2;
        view.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //数组向左边移动一位
                System.arraycopy(mHints, 1, mHints, 0, mHints.length - 1);

                mHints[mHints.length-1] = SystemClock.uptimeMillis();
                if (SystemClock.uptimeMillis() - mHints[0] <= totalTime){
                    callback.onComplete();
                }
            }
        });
    }

    public interface IActionCallback{
        void onComplete();
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值