Android Zone

Android连续多次点击事件处理

2018-12-20  本文已影响1人  翻译不了的声响

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];
}
上一篇下一篇

猜你喜欢

热点阅读