Android连续点击多次事件的实现
程序员文章站
2022-07-03 18:47:10
有时候我们需要实现这样的场景,类似进入开发者模式,即多次点击后执行操作。 首先我们先看一个方法: System提供的一个静态方法arraycopy(),我们可以使用它来实现数组之间的复制。 public static void arraycopy(Object src,int srcPos,Obje ......
有时候我们需要实现这样的场景,类似进入开发者模式,即多次点击后执行操作。
首先我们先看一个方法:
system提供的一个静态方法arraycopy(),我们可以使用它来实现数组之间的复制。
public static void arraycopy(object src,int srcpos,object dest,int destpos,int length);
src:源数组;
srcpos:源数组要复制的起始位置;
dest:目的数组;
destpos:目的数组放置的起始位置;
length:复制的长度。
注意:src and dest都必须是同类型或者可以进行转换类型的数组.
final static int counts = 4;// 点击次数 final static long duration = 1000;// 规定有效时间 long[] mhits = new long[counts];
首先我们定义次数,规定的有效时间,还有对应的数组,即我们要在一秒钟内点击4次才有效
@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, "连续点击了5次", toast.length_long).show(); } }
思路:首先我们点击的时候都将数组向左移动一位,将时间赋值给最后一位,从上面的代码中我们可以看出当我们点击了四次,那么最后一位就已经被移到了第一位,然后我们比较时间:
mhits[0] >= (systemclock.uptimemillis() - duration)
如果是在我们规定的时间内,那么就生效,执行我们所要的操作。
systemclock.uptimemillis():手机开机到现在的时间。
注意:执行操作后需要从新初始化数组:mhits = new long[counts];否则点击第六次第七次的时候也会触发事件。
上一篇: 黑公关惯用的路数
推荐阅读
-
用Kotlin实现Android点击事件的方法
-
Android如何实现非本地图片的点击态
-
Android编程实现点击EditText之外的控件隐藏软键盘功能
-
Android中点击事件的四种写法详解
-
Android TextView实现带链接文字事件监听的三种常用方式示例
-
android 键盘事件和屏幕事件的运行原理及交互实现
-
Android 点击ImageButton时有“按下”的效果的实现
-
Android中父View和子view的点击事件处理问题探讨
-
Android编程实现GridView控件点击图片变暗效果的方法
-
Android中button实现onclicklistener事件的两种方式