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

转载请注明转自:[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下。(∩_∩)

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值