Android(安卓)无入侵解决按钮重复点击---onClick处理
Android 按钮重复点击处理<一行代码解决>
一. 介绍
问题描述: 用户快速连续点击按钮时, 容易引发各种问题.
网上解决方案: Android优雅地处理按钮重复点击
这篇文章是2018年9月份发的, 300多个赞, 而且综合比较了各种解决方案, 文章中使用AOP+注解的方式处理, 也算是不错的解决方案,
发现问题: 代码还是存在入侵的现象, 虽然只是一个注解, 但是需要在项目的每个onClick加上注解@SingleClick, 如果是已经上线的项目, 需要全局修改, 说不定会漏掉一部分.
解决办法: 利用Hook技术, 这里我把解决方法封装成开源库了.
github地址: https://github.com/liys666666/DoubleClick
DoubleClick---3.0版本
DoubleClick---2.0版本
DoubleClick---1.0版本
框架主要有两个功能:
1.无入侵解决按钮重复点击 (本章内容)
2.onClick重复逻辑统一处理
二. 框架的使用 (建议使用最新版本)
1. 简单使用
① 导入框架
//项目根目录下,build.gradleallprojects { repositories { ... maven { url 'https://jitpack.io' } //添加 } }
//app目录下build.gradledependencies { implementation 'com.github.liys666666:DoubleClick:V1.0.4' //添加}
② 自定义的Application初始化即可
public class AppApplication extends Application{ @Override public void onCreate() { super.onCreate(); ViewDoubleHelper.init(this); //默认时间:1秒// ViewDoubleHelper.init(this, 2000); //自定义点击间隔时间(单位:毫秒) }}
如果不需要其它的功能, 到这里就解决了.
2. 如果某个Activity里不需要处理重复点击事件, 怎么办?
解决办法: 让对应的Activity 实现 DoubleClickCancel接口即可.
3. 特殊要求: 只有一部分按钮需要处理重复点击, 怎么办?
用以下方法, 可以自由添加或取消某个View, 如果控件比较多, 可以写成数组, 然后循环处理
//取消hook事件 ViewDoubleHelper.cancelHookView(R.id.btn1); ViewDoubleHelper.cancelHookView(findViewById(R.id.btn1)); //添加hook事件 ViewDoubleHelper.hookResView(R.id.btn2); ViewDoubleHelper.hookResView(R.id.btn2, 2000); //自定义时间(单位: 毫秒) ViewDoubleHelper.hookView(findViewById(R.id.btn2)); ViewDoubleHelper.hookView(findViewById(R.id.btn2), 2000); //自定义时间(毫秒)
优点:
- 没有入侵原来的代码, 普通的要求一行代码就能解决.
- 可以随时增加或删除, 可以局部也可以全部, 不会影响原来的代码.
- 对于有特殊要求的, 也可以单个自定义间隔时间.
缺点:
对于特殊需求还是存在代码入侵现象, 需要在具体的Activity写代码.
2.0版本解决这个问题, 完全不需要在Activity写代码.
2.0使用说明: https://www.jianshu.com/p/df0ef3866cc1
到这里就结束了, 希望能帮到有需要的人, 如果觉得好用, 欢迎star.
技术有限, 如果框架中存在什么问题, 欢迎在下载评论区留言.
更多相关文章
- Android中贝塞尔曲线的绘制方法示例代码
- Android中如何打开或关闭GPS
- Android异步任务(AsyncTask)的设计思想
- 简单的android选项卡Tab菜单TabHost(一)同一Activity上实现
- Android(安卓)Studio 中超级常用的快捷键使用,提高代码编写效率。
- Android(安卓)APK 瘦身处理
- Android中基类BaseActivity的设计与实现
- Android下的配置管理之道之gerrit代码服务器搭建
- Kotlin For Android(安卓)示例代码实战