在用户使用 Android 应用的时候,经常会出现过快且多次点击同一按钮的情况,一方面这是因为应用或手机当前有些卡顿,另一方面也可能是由于很多应用并没有设置按钮点击时的 selector 或者其它按钮响应方式(例如点击按钮时按钮放大,常见于游戏),导致用户误认为没有点击到当前按钮,当然,除了相对应的对应用进行优化和设置点击selector以外,我们还可以做一些其它的工作,例如,判断按钮的 onClick 事件在规定事件段内只响应一次(在论坛的搜索功能中,我们常见到每10秒才可以进行一次搜索的设置,这就在一定程度上减少了无效的网络访问量,减轻服务器压力,APP同理),就如下面代码所示:

public class Utils {// 两次点击按钮之间的点击间隔不能少于1000毫秒private static final int MIN_CLICK_DELAY_TIME = 1000;private static long lastClickTime;public static boolean isFastClick() {boolean flag = false;long curClickTime = System.currentTimeMillis();if ((curClickTime - lastClickTime) >= MIN_CLICK_DELAY_TIME) {flag = true;}lastClickTime = curClickTime;return flag;}
}
btn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (Utils.isFastClick()) {// 进行点击事件后的逻辑操作}}});

上面的代码可以保证同一按钮在1秒内只会响应一次点击事件,这也是大家最常用的方法,不过我更喜欢另一种方法:

public abstract class OnMultiClickListener implements View.OnClickListener{// 两次点击按钮之间的点击间隔不能少于1000毫秒private static final int MIN_CLICK_DELAY_TIME = 1000;private static long lastClickTime;public abstract void onMultiClick(View v);@Overridepublic void onClick(View v) {long curClickTime = System.currentTimeMillis();if((curClickTime - lastClickTime) >= MIN_CLICK_DELAY_TIME) {// 超过点击间隔后再将lastClickTime重置为当前点击时间lastClickTime = curClickTime;onMultiClick(v);}}
}
btn.setOnClickListener(new OnMultiClickListener() {@Overridepublic void onMultiClick(View v) {// 进行点击事件后的逻辑操作}});

https://blog.csdn.net/zhufuing/article/details/53021835

一. button按钮防止重复点击(5秒内设置点击一次)相关推荐

  1. 原生js实现如下效果: 一个按钮,点击它会弹出对话框,但5秒内再点击不会再弹出对话框。5秒后恢复正常。

    原生js实现如下效果: 一个按钮,点击它会弹出对话框,但5秒内再点击不会再弹出对话框.5秒后恢复正常. 第一种方式: 使用函数节流的方式(就是设置一个变量,来一个判断语句,判断这个变量的值.为真或假执 ...

  2. 谷歌浏览器怎么设置点击书签 谷歌浏览器如何设置点击书签

    谷歌浏览器怎么设置点击书签 谷歌浏览器如何设置点击书签 在常用的浏览器中设置标签,可以迅速进入自己所需的页面,非常节省时间,你还可以对设置的书签进行删减等操作,十分方便. 打开应用,在界面的右上角找到 ...

  3. 每日分享html之两个input搜索框、两个button按钮、一个logo效果

    我是c站的一个小博主,近期我会每天分享前端知识包括(原生的web语句,以及vue2和vue3,微信小程序的写法及知识点)本篇文章收录于html特效专栏中,如果想每天在我这学到一些东西,请关注我并订阅专 ...

  4. 【CSS】button(按钮)去默认样式

    button 按钮去掉默认的灰色样式 给它设置 border: 0

  5. 微信小程序之button按钮自适应大小

    在弄小程序的时候发现,可以在wxss设置边框,颜色等样式.但测试屏幕大小改变的时候,在wxss里设置width.height.font-size等,按钮却不会自适应进行大小改变. 在wxml中的but ...

  6. 小程序同时设置点击跳转与自动跳转导致重复跳转的问题及解决

    小程序的自动跳转页面一般会有两个功能,一个是点击跳转,另一个是三秒内未点击则自动跳转,同时添加两个这两个功能会导致点击跳转后,自动跳转仍会执行,即会发生两次跳转.这种情况则需要"上

  7. Android 自动点击工具,自动点击器app下载-自动点击工具 安卓版v1.0.2-PC6安卓网

    自动点击工具app是一款非常不错的系统工具类手机软件,有了自动点击工具app,你将从此释放双手进行抢购,还在等什么?下载自动点击工具app试试吧! 软件介绍 自动点击工具是一款记录手势和点击操作轨迹的 ...

  8. 同一表单内设置两个或两个以上的提交按钮 Two submit buttons in one form

    给相同 name就可以了, 类似radio的和checkbox的用法: You can give each input a different value and keep the same name ...

  9. easyUI设置点击行后背景色,取消点击行后的黄色背景

    easyUI设置点击行后背景色 /*设置点击行后背景色变化,默认黄色*/.datagrid-row-selected {background: #ffffff;}

最新文章

  1. 【struts2】名为dispatcher的ResultType
  2. [译文]Domain Driven Design Reference(三)—— 模型驱动设计的构建模块
  3. Ubuntu16.04 + Matlab2018+ desktop creation
  4. 8255编程c语言程序,51单片机8255驱动C程序
  5. 华为oj----iNOC产品部-杨辉三角的变形 .
  6. mac json格式化工具_一个在 MAC 上 iOS/Flutter 开发的辅助工具
  7. 对session的理解
  8. 27岁博士毕业,32岁成清华博导!黄高助理教授:DenseNet发明者
  9. 1.搭建JavaEE开发环境
  10. VC++ 禁止WebBrowser网页跳转时发出的声音和禁止网页上的文字被选择
  11. 扒一扒国产 Linux 操作系统架构是怎么设计的 ?
  12. excel下载模版(数据字典)
  13. html5 斗鱼 苹果,斗鱼ios端——手游直播开播指导
  14. 雅马哈机器人编程讲解_雅马哈机器人配置方法之西门子S7-1500控制技巧分享
  15. 对称加密与非对称加密算法
  16. 编程入门书籍:大学学习计算机基础必读 5 本经典入门书籍,收藏
  17. 重装系统备份找不到镜像文件_如何从Windows 7系统映像备份中提取单个文件
  18. TNS-12555: TNS:permission denied
  19. Axure如何实现全选、全不选功能
  20. python3打印99乘法表

热门文章

  1. 打开.jmx文件时报错:CannotResolveClassException
  2. 解决IE主页被www.13721.net劫持。
  3. 居民小区二次供水需求预测[奖金¥51000]
  4. 1.1 什么是PowerVM(IBM小型机)虚拟化技术
  5. 【引流技术】最新QQ客源大师多功能引流营销脚本,解放双手自动引流工具【永久脚本+软件使用视频教程】
  6. Nervos DAO是个什么DAO?
  7. python 执行sql语句_python中脚本怎么执行sql语句?
  8. “阿尔法狗”进化到第四代,无需告知规则 MuZero算法自学成“棋”才
  9. 使用jQuery实现电影排行榜
  10. 注册阿里云账号全过程 新手必看教程