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

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

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

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

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

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

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

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

Android 防止控件被重复点击,多次提交
  • u014120638
  • u014120638
  • 2016年04月05日 16:48
  • 1915

Android__小功能__防止重复点击

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

Android 防止控件被重复点击

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

android防止按钮二次点击

http://blog.csdn.net/zhufuing/article/details/53021835 在用户使用 Android 应用的时候,经常会出现过快且多次点击同一按钮的情况,一方...
  • tiramisu_ljh
  • tiramisu_ljh
  • 2017年03月22日 15:09
  • 1720

Android之有效防止按钮多次重复点击

为了防止测试妹子或者用户频繁点击某个按钮,导致程序在短时间内进行多次数据提交or数据处理,那到时候就比较坑了~那么如何有效避免这种情况的发生呢? 我的想法是,判断用户点击按钮间隔时间,如果间隔时间太...
  • u012400885
  • u012400885
  • 2016年05月04日 10:17
  • 5413

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

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

Android连续快速点击多次执行某操作的功能

mImgLogo.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ...
  • jaycee110905
  • jaycee110905
  • 2015年03月20日 18:24
  • 4199
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android中防止重复点击的小技巧
举报原因:
原因补充:

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