优雅的多击事件处理

通过数组移位的方式来记录每次点击目标控件的时间(距离系统开机的时间),然后取数组0索引位置的时间与当前系统的开机时间减去某个时间戳做对比,如果大于该相减的结果,则完成了该多击事件.
代码非常简单,以3击事件为例

long[] mHits = new long[3];//3击事件,数组长度为3,n击事件则长度为n
view.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        //每次点击都左移一次该数组mHits
        System.arraycopy(mHits, 1, mHits, 0, mHits.length - 1);
        //数组位移后,在最后一个位置记录该次点击的最新开机时间
        mHits[mHits.length - 1] = SystemClock.uptimeMillis();
        //取数组的第0个下标记录的时间值去判断,因为0索引的位置是相对最早的单击时间
        if (mHits[0] >= (SystemClock.uptimeMillis() - 500)) {
            // 3击中了,这里写处理3击事件的逻辑
        }
    }
});

看到没,代码非常简单,短短几行就可以实现3击事件了,如果要实现更多的点击事件,如n击事件,只需要将数组的长度设置为n就ok了.其他代码都无需改动.就是这么优雅.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值