package com.example.lwx537240.myapplication3;
import android.os.SystemClock;
import android.util.Log;
import android.view.View;
import java.util.Arrays;
/**
* 设置任意View点击任意次数并设置规定时间内完成的工具类
* 这个工具类比较适合我们开发人员设置一些隐藏开关,进行特定操作
* 比如:彻底关闭程序、弹出该页面某些信息等等
*/
public class ClickTimesUtil {
/***
*
* @param view 要设置点击效果的View
* @param times 点击的次数
* @param timeBetween 点击完成规定次数的时间范围
*/
public static void setClickTimes(View view, final int times, final long timeBetween, final IClick click) {
final long[] mHits = new long[times];//存储多次点击的时间戳
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
System.arraycopy(mHits, 1, mHits, 0, times - 1);//自己拷贝自己,只不过错位拷贝【第二个元素拷贝到第一个元素,第一个元素拷贝到第零个元素】
mHits[times - 1] = SystemClock.uptimeMillis();//给数组的最后一个元素赋值
if (mHits[times - 1] - mHits[0] <= timeBetween) {//当第mHits[lengt-1]点击的时间戳减去mHits[0]的时间戳小于指定时间则该多击事件生效
Log.e("TAG", timeBetween + "毫秒内点击" + times + "次");
Arrays.fill(mHits, 0); //数据全部置零
if (click != null) {
click.onClickListen(); //设置事件的回调
}
}
}
});
}
interface IClick {
void onClickListen();
}
}
Android设置View的点击次数的工具类_峥嵘life的博客-CSDN博客 Android优雅地处理按钮重复点击 - SegmentFault 思否
private static long time = 0;
private static int count= 1;
public static boolean exitAfterMany() {
long timeNew = new Date().getTime();
if ((timeNew-time)<1000){ //连续点击间隔
count += 1;
}else{
count = 1;
}
time = timeNew;
LogUtils.i("点击了:"+count);
if(count>=5){ //点击次数
// LogUtils.i("点击了5次");
count = 1;
}
return true;
}
Android 连续点击按钮拦截 - 简书https://www.codeleading.com/article/69625663670/Android 连续点击按钮拦截 - 简书
Android防止连点非常简单的操作 - 代码先锋网
|