Android开发中点击事件最常见和使用最多的事件,系统只提供了单击和长按事件。有时候可能有双击或多次点击交互的需求,例如:双击返回键退出程序,连续多次点击打开隐蔽功能等等。那么如何通过单击事件实现双击或多次点击事件,下面我们一起来看看解决方法。
1. 防止重复点击
① 控制点击状态
点击之后把控件设置为不可点击:
//不可点击
btn.setClickable(false);
//或者禁用
btn.setEnabled(false);
② 利用系统时间差
private static long lastClickTime=0;
private static final int CLICK_TIME = 500; //快速点击间隔时间
// 判断按钮是否快速点击
public static boolean isFastClick() {
long time = System.currentTimeMillis();
if (time - lastClickTime < CLICK_TIME) {//判断系统时间差是否小于点击间隔时间
return true;
}
lastClickTime = time;
return false;
}
2. 连续多次点击
Android中只提供了单击事件,没有双击事件或多次点击事件。所以需要我们自己在单击监听事件上去实现。
1)双击事件
private long startClickTime = 0;
if (SystemClock.uptimeMillis() - startClickTime < 500) {//判断两次点击时间差
Toast.makeText(this, "双击事件", Toast.LENGTH_SHORT).show();
} else {
startClickTime = SystemClock.uptimeMillis();
}
2)多次点击事件
在开发中有时候需要做一些隐蔽的功能,例如:手机“设置”里的“开发模式”,需要连续点击7次版本号后才会显示出来。
private int COUNTS = 5;// 点击次数
private long[] mHits = new long[COUNTS];//记录点击次数
private long DURATION = 2000;//有效时间
//将mHints数组内的所有元素左移一个位置
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];
}
网友评论