美文网首页Android Zone
Android连续多次点击事件处理

Android连续多次点击事件处理

作者: 翻译不了的声响 | 来源:发表于2018-12-20 11:13 被阅读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];
    }
    

    相关文章

      网友评论

        本文标题:Android连续多次点击事件处理

        本文链接:https://www.haomeiwen.com/subject/jrqphqtx.html