前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Android连续点击多次事件的实现

Android连续点击多次事件的实现

作者头像
用户1289394
发布2021-07-30 16:25:21
发布2021-07-30 16:25:21
1.3K00
代码可运行
举报
文章被收录于专栏:Java学习网Java学习网
运行总次数:0
代码可运行

有时候我们需要实现这样的场景,类似进入开发者模式,即多次点击后执行操作。

首先我们先看一个方法:

System提供的一个静态方法arraycopy(),我们可以使用它来实现数组之间的复制。

代码语言:javascript
代码运行次数:0
复制
public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length);

src:源数组; srcPos:源数组要复制的起始位置; dest:目的数组; destPos:目的数组放置的起始位置; length:复制的长度。 注意:src and dest都必须是同类型或者可以进行转换类型的数组.

代码语言:javascript
代码运行次数:0
复制
final static int COUNTS = 4;// 点击次数 final static long DURATION = 1000;// 规定有效时间 long[] mHits = new long[COUNTS];

首先我们定义次数,规定的有效时间,还有对应的数组,即我们要在一秒钟内点击4次才有效

代码语言:javascript
代码运行次数:0
复制
 @Override public void onClick(View v) {
        continuousClick(COUNTS, DURATION);
    } private void continuousClick(int count, long time) { //每次点击时,数组向前移动一位 System.arraycopy(mHits, 1, mHits, 0, mHits.length - 1); //为数组最后一位赋值 mHits[mHits.length - 1] = SystemClock.uptimeMillis(); if (mHits[0] >= (SystemClock.uptimeMillis() - DURATION)) {
            mHits = new long[COUNTS];//重新初始化数组 Toast.makeText(this, "连续点击了4次", Toast.LENGTH_LONG).show();
        }
    }

思路:首先我们点击的时候都将数组向左移动一位,将时间赋值给最后一位,从上面的代码中我们可以看出当我们点击了四次,那么最后一位就已经被移到了第一位,然后我们比较时间:

mHits[0] >= (SystemClock.uptimeMillis() - DURATION)

如果是在我们规定的时间内,那么就生效,执行我们所要的操作。

SystemClock.uptimeMillis():手机开机到现在的时间。

注意:执行操作后需要从新初始化数组:mHits = new long[COUNTS];否则点击第六次第七次的时候也会触发事件。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-07-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java学习网 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档