加入点击时间间隔的点击事件IntervalOnClick

现在市场上手机层出不穷,各式各样,性能也越来越好,有些手机的触摸灵敏度低,然后就会导致我轻轻的碰了两下,然后点击事件就触发了两次。

为了避免这种事情的发生,我根据实际情况定义了一个有可设置点击时间间隔的点击事件抽象类,只要实现了该抽象类,传入一个你需要设定的时间间隔,你就可以避免上面说的快速点击执行多次操作。

直接先附上该类的所有代码(包名自己加入自己的包名)

import android.util.SparseArray;
import android.view.View;

/**
 * @author Voctex 2015-12-24
 * @param 有点击时间间隔的点击事件
 * 
 */
public abstract class IntervalOnClick implements View.OnClickListener {

	private long beforeTime = 0;
	private int interval_time = 700;
	private SparseArray<Long> sparseArray = new SparseArray<Long>();

	/**
	 * @param default interval_time is 700ms
	 */
	public IntervalOnClick() {
	}

	/**
	 * @param set
	 *            click interval_time
	 */
	public IntervalOnClick(int interval_time) {
		this.interval_time = interval_time;
	}

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		long currentTime = System.currentTimeMillis();
		beforeTime = sparseArray.get(v.getId()) != null ? sparseArray.get(v
				.getId()) : 0;
		if (currentTime - beforeTime >= interval_time) {
			sparseArray.put(v.getId(), beforeTime = currentTime);
			IonClick(v);
		}
	}

	public abstract void IonClick(View v);

}

该类利用了系统的时间戳、android建议使用的容器类SparseArray和View的id作为key,以及抽象类的特性,这个类比较浅显了,如果有哪里看不懂可以留言

对了,具体使用是这样的:

首先要先定义出来,当然也可以不用定义出来,直接使用

private class IOnClick extends IntervalOnClick {

		public IOnClick() {
			super();
			// TODO Auto-generated constructor stub
		}

		public IOnClick(int interval_time) {
			super(interval_time);
			// TODO Auto-generated constructor stub
		}

		@Override
		public void IonClick(View v) {
			// TODO Auto-generated method stub
			switch (v.getId()) {
			case R.id.fragment_text:
				
				break;

			default:
				break;
			}
		}

	}

这是定义出来的,使用如下:

fragAcLayout.setOnClickListener(new IOnClick());
//或者如下
fragAcLayout.setOnClickListener(new IOnClick(700));

不用定义的如下:

fragAcLayout.setOnClickListener(new IntervalOnClick() {
			
			@Override
			public void IonClick(View v) {
				// TODO Auto-generated method stub
				
			}
		});
//或者如下
fragAcLayout.setOnClickListener(new IntervalOnClick(700) {
			
			@Override
			public void IonClick(View v) {
				// TODO Auto-generated method stub
				
			}
		});

嗯嗯,我感觉我已经写得够详细了,在使用的时候还是出现问题的话,那我真不知道说什么了,觉得好用的请给我个赞哈~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值