Android中防止重复点击的小技巧

原创 2015年11月26日 20:45:46
转载请注明转自:[noyet12的博客](http://blog.csdn.net/u012975705) 
博客原址:http://blog.csdn.net/u012975705/article/details/50060887

PS: 好久没有写过博客了,不经意间看到这篇在我接触Android不久时写的文章,现在看来确实挺粗糙的(有点看不下去了。。),这里写写我刚想到的另一种思路吧:

private View.OnClickListener logListener = new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            long firstClickTime = -1;
            long curClickTime = System.currentTimeMillis();
            if (v.getTag() instanceof Long) {
                firstClickTime = (long) v.getTag();
            }
            if (-1 == firstClickTime || curClickTime - firstClickTime > TIME_GAP) {//TIME_GAP 你设置的时间差
                v.setTag(curClickTime);
                ToastUtil.showShort(mContext, "马上再次点击生效");
                return;
            }
            ......
        }
    };

.
.
- - - - - - -分割线- - - - - - -
.

在点击时设置时间标志,判断2次点击的时间差,自定义一个时间间隔SPACE_TIME,做判断:当2次点击的时间差大于SPACE_TIME时才能出发点击。Demo源码如下。

工具类:

package com.plusub.renthostapp.util;

/**
 * package: com.plusub.renthostapp.util
 * Created by noyet on 2015/11/26.
 */
public class NoDoubleClickUtils {
    private static long lastClickTime;
    private final static int SPACE_TIME = 500;

    public static void initLastClickTime() {
        lastClickTime = 0;
    }

    public synchronized static boolean isDoubleClick() {
        long currentTime = System.currentTimeMillis();
        boolean isClick2;
        if (currentTime - lastClickTime > SPACE_TIME) {
            isClick2 = false;
        } else {
            isClick2 = true;
        }
        lastClickTime = currentTime;
        return isClick2;
    }
}
使用方式:

/**
     * 订单日志
     */
    private View.OnClickListener logListener = new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if (!NoDoubleClickUtils.isDoubleClick()) {
                EventBus.getDefault().post(new RefreshEvent(RefreshEvent.RefreshType.TYPE_LAND_ORDER_LOG, view.getTag()));
            }
        }
    };

自己先Mark下。(∩_∩)

版权声明:本文为博主原创文章,转载请注明出处。博客首页:http://blog.csdn.net/u012975705。订阅:http://blog.csdn.net/u012975705/rss/list https://blog.csdn.net/u012975705/article/details/50060887

【Android】Android防止过快点击造成多次事件执行(防止按钮重复点击)

在用户使用 Android 应用的时候,经常会出现过快且多次点击同一按钮的情况,一方面这是因为应用或手机当前有些卡顿,另一方面也可能是由于很多应用并没有设置按钮点击时的 selector 或者其它按钮...
  • zhufuing
  • zhufuing
  • 2016-11-03 15:15:20
  • 14412

Android 防止多次重复点击的三种方法

在项目中经常会遇到对按钮、自定义控件的 Item 等防止多次重复的点击的问题,下面做一个小结。方法1:使用 RxJava 的 throttleFirst()具体代码如下: /** * 防...
  • hust_twj
  • hust_twj
  • 2017-12-07 16:02:00
  • 2250

Android:防止过快点击造成多次事件

onClick事件是Android开发中最常见的事件,本文介绍了一个小技巧,能防止view被误操作快速重复点击时,而重复产生事件。...
  • barryhappy
  • barryhappy
  • 2015-03-20 23:57:45
  • 44469

Android 防止控件被重复点击

由于手机反应慢还是神马原因,用户对一个button 可快速的多次点击。那么 可能出现问题: 比如 多次提交数据... 在开发中经常会遇到这样的情况,一个按钮点击后会弹出Toast或者Dialog,如...
  • abc5382334
  • abc5382334
  • 2013-10-14 17:32:52
  • 12587

Android 防止控件被重复点击,多次提交

Android 防止控件被重复点击,多次提交
  • u014120638
  • u014120638
  • 2016-04-05 16:48:23
  • 2189

Android防止过快点击造成多次事件 一行代码搞定,特别简单,可以复用

onClick事件是Android开发中最常见的事件,正常情况下这段代码是没什么问题的, 但是Android设备的机型性能等千差万别,如果碰到比较卡的手机, 则有可能出现submitOrder()函数...
  • qiushi_1990
  • qiushi_1990
  • 2016-05-10 18:31:41
  • 4765

Android安卓关于避免按钮快速多次点击问题解决办法

Button 按钮避免连续点击问题的三种解决办法
  • chenshuaiforwork
  • chenshuaiforwork
  • 2016-09-08 14:12:48
  • 2228

Android__小功能__防止重复点击

Android控件监听事件是OnClickListener。为了防止我们快速点击某个控件连续触发多次事件,重写了一个继承View.OnClickListener的点击事件NoDoubleClickLi...
  • weixin_36244867
  • weixin_36244867
  • 2016-10-08 16:05:59
  • 428

android 避免按钮重复点击事件

android 防止按钮重复点击事件
  • kongTy
  • kongTy
  • 2017-06-23 17:19:59
  • 418

Android防止按钮两次点击

Android防止按钮两次点击
  • Spartacus0830
  • Spartacus0830
  • 2016-02-04 14:27:22
  • 732
收藏助手
不良信息举报
您举报文章:Android中防止重复点击的小技巧
举报原因:
原因补充:

(最多只允许输入30个字)