参考:防止Android过快点击造成多次事件的三种方法_胖胖的博客-CSDN博客

实现逻辑很简单:

    • 设置限定时间
    • 在用户点击时开始计时
    • 若计时未超过限定时间,则不允许触发点击事件

因还未学习过Rxjava,因此使用类似文中的第二种进行实现

完成后发现一个小问题:当多个控件绑定一个 Listener 时,点击 控件A 后会对 控件B 也会造成点击限制;初步设想在自定义Listener类的时候多加一个对ID的判断,这样的话要另外设计一个能储存ID和限定时间的数据结构了。

in OnMultiClickListener.java:

public abstract class OnMultiClickListener implements View.OnClickListener {
// 两次点击按钮之间的点击间隔不能少于指定时间
private static final int MIN_CLICK_DELAY_TIME = 5000;
private static long lastClickTime; public abstract void onMultiClick(View v); @Override
public void onClick(View v) {
long curClickTime = System.currentTimeMillis();
if((curClickTime - lastClickTime) >= MIN_CLICK_DELAY_TIME) {
// 超过点击间隔后再将lastClickTime重置为当前点击时间
lastClickTime = curClickTime;
onMultiClick(v);
}
} }

使用(使用的类不用继承任何接口了):

    public void initView() {
Button listBtn = findViewById(R.id.btn_toListView);
Button testBtn = findViewById(R.id.btn_test); listBtn.setOnClickListener(multiClickListener);
testBtn.setOnClickListener(multiClickListener);
}
    OnMultiClickListener multiClickListener = new OnMultiClickListener() {
@Override
public void onMultiClick(View v) {
switch (v.getId()) {
case R.id.btn_toListView:
Toast.makeText(mContext, "點擊 btn_toListView", Toast.LENGTH_SHORT).show();
break;
case R.id.btn_test:
Toast.makeText(mContext, "點擊 btn_test", Toast.LENGTH_SHORT).show();
break;
default:
throw new IllegalStateException("Unexpected value: " + v.getId());
}
}
};

【Android】关于连续多次点击控件的控制方案(新建监听类)的更多相关文章

  1. android CheckBox控件的定义及事件监听

    http://www.beijibear.com/index.php?aid=336 android CheckBox控件的定义及事件监听,本例实现CheckBox控件的定义及点击事件的监听并显示结果 ...

  2. Android输入控件EditText和软键盘监听

    1. 跳转到新的页面自动软键盘显示情况: 在配置清单文件AndroidManifest.xml文件,对Activity的windowSoftInputMode属性进行设置. stateUnspecif ...

  3. Android SDK提供的常用控件Widget “常用控件”“Android原生”

    Android提供一个标准的视图工具箱来帮助创建简单的UI界面.通过使用这些控件(必要时,可以对这些控件进行修改). 创建一个简单的.xml文件,从预览窗口可以看到Android SDK提供的原生控件 ...

  4. android学习日记03--常用控件button/imagebutton

    常用控件 控件是对数据和方法的封装.控件可以有自己的属性和方法.属性是控件数据的简单访问者.方法则是控件的一些简单而可见的功能.所有控件都是继承View类 介绍android原生提供几种常用的控件bu ...

  5. android - 自定义(组合)控件 + 自定义控件外观

    转载:http://www.cnblogs.com/bill-joy/archive/2012/04/26/2471831.html android - 自定义(组合)控件 + 自定义控件外观   A ...

  6. Android自动化测试中AccessibilityService获取控件信息(2)-三种方式对比

    Android自动化测试中AccessibilityService获取控件信息(2)-三种方式对比   上一篇文章: Android自动化测试中AccessibilityService获取控件信息(1 ...

  7. Android自动化测试中AccessibilityService获取控件信息(1)

    Android自动化测试中AccessibilityService获取控件信息(1) 分类: android自动化测试2014-03-24 15:31 3455人阅读 评论(16) 收藏 举报 and ...

  8. 用了GradientDrawable后,当点击控件时,控件大小发生变化

    android新手:发现一个很奇怪的问题,用了GradientDrawable后,当点击控件时,程序自动使我的一些控件大小保持一致,为什么呢,我就是不想它们保持一致啊 改了好久好久:GradientD ...

  9. Android UI开发之开源控件项目整理

    一.Banner 1.https://github.com/youth5201314/banner Android广告图片轮播控件,支持无限循环和多种主题,可以灵活设置轮播样式.动画.轮播和切换时间. ...

随机推荐

  1. 一位弱校选手的oi经历

    锦瑟无端五十弦,一弦一柱思华年. 这只是一位不知道什么时候就要退役的oier在一节晚自习的时候写的无聊东西 曾经也想好好写一写自己的oi历程,也许会有人看,不过因为自己懒加上文笔差也一直没写,直到昨天 ...

  2. Tomcat9没有service.bat

    下载个Windows版本的才有service.bat,默认是不带的. 附上tomcat9的下载地址: https://archive.apache.org/dist/tomcat/tomcat-9/v ...

  3. 留心一下VS的这个调试代码的bug

    最近和同事在Debug代码时,遇到一个诡异的问题,开始以为是代码问题,分析了之后发现是VS(v16.8.3)的bug,特此分享一下,如果大家近期遇到类似的问题,不要茫然. 这个bug重现的方式是,在d ...

  4. Linux 修改权限,查看进程,结束进程 命令

    在linux终端先输入ll,可以看到bai如:-rwx-r--r-- (一共10个参数) 表示文件所属组和du用户的对应权限.zhi第一个跟dao参数属于管理员,跟chmod无关,先不管.2-4参数: ...

  5. javascript之原型、原型链

    一.原型: 1. 任何函数都有prototype属性(对象才有属性,函数也是对象): 2. 函数的prototype属性的值是个对象,这个对象就是原型(对象): 3. 作用:通过构造函数创建出来的对象 ...

  6. NET 调用人脸识别算法

    以前有个OpenCV 移植版EMCV可以用作图像识别等 https://github.com/emgucv/emgucv 现在有各种接口 比如虹软SDK  https://ai.arcsoft.com ...

  7. js--数组的reduce()方法的使用介绍

    前言 阅读文章之前先来考虑一个问题,如何去实现迭代一个数组,并且把它累加到一个值中?首先能够想到的是设置一个初始值,然后通过循环遍历这个数组,将数组中的值一项一项累加起来,然后返回这个设置的值就是最终 ...

  8. 网络 IO 工作机制

    ref: 深入分析 java web 技术内幕 2.3 两台计算机之间进行数据的传输需要经过很多步骤.首先有相互沟通的意向,然后还要有沟通的通道:通过电话还是面对面交流(物理链路).最后,两个人说话的 ...

  9. JDK下载地址 Oracle JDK下载 地址 (已解决)

    现在JDK开始收费了 Oracle官方对JDK的管理也变得严格了,现在想要在官网下载jdk需要先注册Oracle账号,这倒是小事但是网页反应慢注册填写内容复杂导致很多人不想注册. 不过有的人提供了公开 ...

  10. 关于客户和供应商预制凭证添加WBS字段

    客户和供应商的预制凭证的对应标准屏幕SAPLF0400301和SAPLF0400302并没有提供WBS字段,有的需求需要增强WBS字段到屏幕上,本文会介绍增强WBS字段的步骤,也请读者多多指教.为了不 ...