Android View防抖功能

RxView可以做防抖功能


      //多次点击只产生一次请求,防抖动
            RxView.clicks(btn_order_pay)
                        .throttleFirst(1, TimeUnit.SECONDS)
                        .subscribe {
                            val param = PayParam()
                            param.apply {
                                orderSeq = mOrderSeq
                                refundChangeTotalFee = refundChangeTotalFee
                            }
                            mViewModel.payRefundChangeFee(param)
                        }

点击事件计时防抖

/**
 * @name: GPS Camera
 * @author: TysonWu
 * @time: 2023/2/22 15:41
 * @version:
 * @description:点击事件防抖工具类
 */
public class AntiShakeUtils {
    private static final long COLD_TIME_CLICK = 1000L;
    private static final long COLD_TIME_LONG_CLICK = 1500L;

    private static long sLastResponseClick = 0;

    public static boolean canResponseClick() {
        long currentTime = SystemClock.elapsedRealtime();
        return (currentTime - sLastResponseClick) >= COLD_TIME_CLICK;
    }

    public static void updateLastClickTime() {
        sLastResponseClick = SystemClock.elapsedRealtime();
    }

    public static boolean canResponseLongClick() {
        long currentTime = SystemClock.elapsedRealtime();
        return (currentTime - sLastResponseClick) >= COLD_TIME_LONG_CLICK;
    }
}

使用

  if (!AntiShakeUtils.canResponseClick()) {
                    return
                } else {
                     AntiShakeUtils.updateLastClickTime()
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容