优雅的多击事件处理

来源:互联网 发布:钢材进销存软件免费版 编辑:程序博客网 时间:2024/06/05 02:22

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

long[] mHits = new long[3];//3击事件,数组长度为3,n击事件则长度为nview.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了.其他代码都无需改动.就是这么优雅.

0 0
原创粉丝点击