android 防抖点击(全局)

文章介绍了一种在Android项目中实现防抖点击的方法,通过在BaseActivity中添加代码来防止短时间内连续点击事件的触发。主要逻辑包括记录上一次点击时间并判断两次点击间隔是否超过500ms,以决定是否允许此次点击事件的传递。
摘要由CSDN通过智能技术生成

转载,但原文方法在我项目中使用还是有点小问题,针对我的项目修改了部分
在baseActivity中加入一下代码。

//-----------------------防抖start---------------------------
    private long LAST_CLICK_TIME; // 上一次点击时间
    private boolean isCanClick = true;

    private void isFastClick() {
        long currentClickTime = System.currentTimeMillis();
        // 两次点击间隔不能少于500ms
        isCanClick = (currentClickTime - LAST_CLICK_TIME) >= 500;
        LAST_CLICK_TIME = currentClickTime;
    }

    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        isFastClick();
        if (ev.getAction() == MotionEvent.ACTION_DOWN) {
            if (!isCanClick) {
                return true;
            }
        }
        return super.dispatchTouchEvent(ev);
    }
//-----------------------防抖end---------------------------
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Android 开发中,防抖和节流是常用的技术,用于控制用户交互产生的事件频率,以提升用户体验和减轻系统负担。 防抖(Debounce)是指在一段时间内只执行一次操作,而忽略其他连续的操作。例如,当用户连续点击按钮时,我们可以设置一个时间间隔,在这个时间间隔内只响应最后一次点击操作,忽略之前的所有点击操作。 节流(Throttle)是指在一段时间内只执行一次操作,但是会响应所有操作。例如,当用户连续滑动屏幕时,我们可以设置一个时间间隔,在这个时间间隔内只执行一次滑动操作,但是会响应所有滑动事件。 实现防抖和节流可以使用 Handler、RxJava、Coroutines 等方式。下面以使用 Handler 实现防抖为例: ```java private static final long DEBOUNCE_DELAY = 300; // 设置防抖延迟时间 private Handler mHandler = new Handler(); private Runnable mRunnable; public void onClick(View view) { if (mRunnable != null) { mHandler.removeCallbacks(mRunnable); // 移除之前的延迟操作 } mRunnable = new Runnable() { @Override public void run() { // 执行操作 } }; mHandler.postDelayed(mRunnable, DEBOUNCE_DELAY); // 添加延迟操作 } ``` 上述代码中,当按钮被点击时,先移除之前的延迟操作,然后创建一个新的延迟操作并添加到 Handler 中,延迟时间为 DEBOUNCE_DELAY。这样就能实现防抖效果,只执行最后一次点击操作。 需要注意的是,防抖和节流的具体实现方式可以根据需求和框架选择合适的方法,上述代码只是一种示例,具体应用场景和实现方式可能会有所不同。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值