美文网首页
Android防连续暴力点击(dispatchTouchEven

Android防连续暴力点击(dispatchTouchEven

作者: xiaoyao1920 | 来源:发表于2020-04-30 17:33 被阅读0次

    在BaseActivity中重写dispatchTouchEvent 代码如下:

    float touchX =-1; //记录点击的坐标
    float touchY =-1;
    float poi = 40;//偏移量
    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {//MotionEvent中还有很多参数,如 DOWN事件的开始时间,UP事件的结束时间等等
        if (ev.getAction() == MotionEvent.ACTION_DOWN) {
            if (isFastClick()
                    &&(touchX != -1 && touchY != -1
                    &&ev.getX() <= touchX + poi && ev.getX() >= touchX - poi //点击位置判断 以点击点坐标为中心 设置范围
                    &&ev.getY() <= touchY + poi && ev.getY() >= touchY - poi)) {
                return true;
            }
            touchX = ev.getX();
            touchY = ev.getY();
        }
        return super.dispatchTouchEvent(ev);
    }
    
    private long lastClickTime;
    
    private boolean isFastClick() {//点击间隔时间判断
        long time = System.currentTimeMillis();
        long timeD = time - lastClickTime;
        if (timeD >= 0 && timeD <= 500) {//点击间隔时间
            return true;
        } else {
            lastClickTime = time;
            return false;
        }
    }
    

    MotionEvent中还有很多参数,如 DOWN事件的开始时间,UP事件的结束时间等等,如果有错误或者更优的方法请留言。

    相关文章

      网友评论

          本文标题:Android防连续暴力点击(dispatchTouchEven

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