关于Android 点击防抖动处理

news/2025/2/7 7:09:58/

我们使用app的时候,经常会因为某些原因出现双击的情况,比如点击一个按钮会弹出一个提示框,但是如果我们快速的点击按钮两次,这个时候会出现两个提示框。

双击跟抖动看似一样,其实不是,双击是一个完整的事件,短时间内监听到两次点击事件,两次点击事件过后,才回去处理逻辑,比如弹出一个提示框,前提条件是一定要有两次点击事件之后。而抖动是短时间内,两次点击事件都在处理逻辑,相当于逻辑处理了两次。

简单的说就是,双击后,逻辑只运行一次,而抖动是,双击之后逻辑运行两次,其实抖动不止两次,也可以是多次,就看段时间内能触发到多少次的问题了。

那么,像上面说的,连续弹出两个提示框肯定是不行的,所以要防抖动,如何防抖动呢,与上面解释的相对应,原理就是段时间内触发事件的次数,只处理最后一次,忽略前面的多次。

这个时候就需要规定一个时间间隔了,也就是这个短时间具体是多差,按照触发响应机制的时间,一般定为1000毫秒或者800毫秒,有时候换加上对是否是同一个按钮的判断,也就是判断按钮id是否是一致。

代码实现起来其实很简单,如下:

/*** 防止按钮多次点击*/
public class NoShakeBtnUtil {private static long lastClickTime = 0;private static long DIFF = 1000;private static int lastButtonId = -1;/*** 判断两次点击的间隔,如果小于1000,则认为是多次无效点击** @return*/public static boolean isFastDoubleClick() {return isFastDoubleClick(-1, DIFF);}/*** 判断两次点击的间隔,如果小于1000,则认为是多次无效点击** @return*/public static boolean isFastDoubleClick(int buttonId) {return isFastDoubleClick(buttonId, DIFF);}/*** 判断两次点击的间隔,如果小于diff,则认为是多次无效点击** @param diff* @return*/public static boolean isFastDoubleClick(int buttonId, long diff) {long time = System.currentTimeMillis();long timeD = time - lastClickTime;if (timeD < 0) {return false;}if (lastButtonId == buttonId && lastClickTime > 0 && timeD < diff) {return true;}lastClickTime = time;lastButtonId = buttonId;return false;}
}


http://www.ppmy.cn/news/826768.html

相关文章

安卓点击防抖优化手册(非代码层指导)

### 1.1.1. 什么是点击防抖&#xff1f; &emsp;&emsp;在应用日常使用过程中&#xff0c;短时间内超过一次点击某个按钮会触发多次这个按钮的后续逻辑代码运行&#xff0c;这时加入某些手段屏蔽掉除第一次以外的点击事件去重复触发逻辑的控制称为点击防抖。 ### 1.1.…

Android【防抖操作的工具类】

防抖 public class OneClickUtil {private String methodName;public static final int MIN_CLICK_DELAY_TIME 1000;private long lastClickTime 0;public OneClickUtil(String methodName) {this.methodName methodName;}public String getMethodName() {return methodNam…

安卓 一个注解实现防抖

1、添加插件库 build.gradle&#xff08;project&#xff09;: dependencies {...// AOP 配置插件&#xff1a;https://github.com/HujiangTechnology/gradle_plugin_android_aspectjxclasspath com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.10}allprojects {rep…

Android 功能防抖

功能防抖 理解的意思是防止短时间内多次点击或者输入导致的重复请求。 常见情景 1.Activity跳转&#xff0c;我们一般用Button写onClick监听然后跳转&#xff0c;如果你的目标Activity的启动模式为默认&#xff0c;会出现多次创建目标activity问题。 2.单控件多次点击请求网络…

Imx6ull linux 设备树

一 linux设备树简介 1.1 linux设备树 Linux设备树是一种用于描述硬件设备信息的数据结构&#xff0c;它在Linux内核中发挥着越来越重要的作用 在系统上电后&#xff0c;BootLoader会将设备树传递给Linux内核&#xff0c;内核根据识别的树信息展开为platform_device、spi_dev…

Nerf论文阅读笔记Neuralangelo: High-Fidelity Neural Surface Reconstruction

Neuralangelo&#xff1a;高保真神经表面重建 公众号&#xff1a;AI知识物语&#xff1b;B站暂定&#xff1b;知乎同名 视频入门介绍可以参考 B站——CVPR 2023最新工作&#xff01;Neuralangelo&#xff1a;高保真Nerf表面重建 https://www.bilibili.com/video/BV1Ju411W7…

禁用Enter键,右键,复制粘贴

//禁用Enter键 document.onkeydown function (e) { //捕捉回车事件 let ev (typeof event ! undefined) ? window.event : e; if (ev.keyCode 13 || event.which 13) { return false; } } <body>标签中加入οncοntextmenu”return false” onselectstart”retur…

电脑连续复制粘贴,随意复制,随意粘贴,需要打开剪贴板功能。

电脑连续复制粘贴&#xff0c;随意粘贴&#xff0c;需要打开剪贴板功能。 以win10为例&#xff0c;连续复制粘贴步骤如下所示&#xff1a; 1、在电脑桌面点击windows图标。 2、点击齿轮状图标&#xff0c;进入设置。 3、在windows设置中&#xff0c;点击系统。 4、选择剪贴板…