没有卡顿的全局设置防暴力点击事件

没有卡顿的全局设置防暴力点击事件

这个功能的核心思想是在baseactivity复写dispatchTouchEvent方法,通过判断手指按下屏幕与抬起屏幕的事件间隔来判定是否是点击事件,然后再通过两次点击事件间隔来判定是否为暴力点击

一.创建Utils工具类,来验证两次点击的间隔

/**
 * @name 
 *  * @class name:
 * @class describe *
 * @anthor chuangcui 邮箱:919953719@qq.com
 * @time 11/23/20 4:19 PM
 */

public class Utils {
    private static final int MIN_DELAY_TIME= 500;  // 两次点击间隔不能少于500ms
    private static long lastClickTime;

    public static boolean isFastClick() {
        boolean flag = true;
        long currentClickTime = System.currentTimeMillis();
        if ((currentClickTime - lastClickTime) >= MIN_DELAY_TIME) {
            flag = false;
        }
        lastClickTime = currentClickTime;
        return flag;
    }


}

二.复写BaseActivity的dispatchTouchEvent事件

  private  final int MIN_DELAY_TIME= 300;  // 点击与抬起手势间隔小于300ms则认为是点击事件
    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        if (ev.getAction() == MotionEvent.ACTION_DOWN){
            // 获取手指按下屏幕时间
            ClickTime= System.currentTimeMillis();
        }
        if (ev.getAction() == MotionEvent.ACTION_UP){
            // 获取手指抬起时的时间
            long currentClickTime = System.currentTimeMillis();
            //判断手势按下与抬起时的时间间隔小300ms则认为是点击事件
            if ((currentClickTime - ClickTime) <= MIN_DELAY_TIME) {
                if (Utils.isFastClick()){
                    return true;
                }
            }

        }
        return super.dispatchTouchEvent(ev);
    }
  • 2
    点赞
  • 8
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值