2018-11-26 13:57:40 546浏览
今天扣丁学堂Android培训老师给大家介绍一下关于Android实现连续点击多次事件的代码详解,希望对同学们学习有所帮助,首先我们先看一个方法System提供的一个静态方法arraycopy(),我们可以使用它来实现数组之间的复制,下面我们一起来看一下吧。
public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length);
final static int COUNTS = 4;// 点击次数 final static long DURATION = 1000;// 规定有效时间 long[] mHits = new long[COUNTS];
@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)如果是在我们规定的时间内,那么就生效,执行我们所要的操作。
package cn.com.cyj.doubleclick;
import android.app.Activity;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends Activity {
// 数组长度代表点击次数
long[] mHits = new long[3];
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
/**
* 双击事件
* @param v
*/
public void click(View v) {
// 数组依次先前移动一位
System.arraycopy(mHits, 1, mHits, 0, mHits.length - 1);
mHits[mHits.length - 1] = SystemClock.uptimeMillis();// 开机后运行时间
if (mHits[0] >= (mHits[mHits.length - 1] - 500)) {
Toast.makeText(this, "3连击", Toast.LENGTH_LONG).show();
}
}
}
以上扣丁学堂Android培训之实现连续点击多次事件代码详解,希望对大家有所帮助,
扣丁学堂IT职业在线学习教育平台为您提供完整的体系Android视频教程让你快速掌握Android从入门到精通开发实战技能。
【关注微信公众号获取更多学习资料】