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); //自定义时间(毫秒)

优点:

  1. 没有入侵原来的代码, 普通的要求一行代码就能解决.
  2. 可以随时增加或删除, 可以局部也可以全部, 不会影响原来的代码.
  3. 对于有特殊要求的, 也可以单个自定义间隔时间.

缺点:
对于特殊需求还是存在代码入侵现象, 需要在具体的Activity写代码.
2.0版本解决这个问题, 完全不需要在Activity写代码.
2.0使用说明:
https://www.jianshu.com/p/df0ef3866cc1

到这里就结束了, 希望能帮到有需要的人, 如果觉得好用, 欢迎star.

技术有限, 如果框架中存在什么问题, 欢迎在下载评论区留言.

更多相关文章

  1. Android中贝塞尔曲线的绘制方法示例代码
  2. Android中如何打开或关闭GPS
  3. Android异步任务(AsyncTask)的设计思想
  4. 简单的android选项卡Tab菜单TabHost(一)同一Activity上实现
  5. Android(安卓)Studio 中超级常用的快捷键使用,提高代码编写效率。
  6. Android(安卓)APK 瘦身处理
  7. Android中基类BaseActivity的设计与实现
  8. Android下的配置管理之道之gerrit代码服务器搭建
  9. Kotlin For Android(安卓)示例代码实战

随机推荐

  1. Android(安卓)TextView drawText BaseLin
  2. API 25 (Android 7.1.1 API) widget.Spin
  3. Android sensor 理解及架构
  4. android 滚动的缓冲图片
  5. Android Untold Stories --- Selector an
  6. android ---- ImageUtil工具类
  7. android开发【六】(基于android studio3.2
  8. Android CardView设置成普通的Framelayou
  9. Setting up ccache on android 4.0.3
  10. Eclipase插件下载地址