有时候需求是需要双击响应,有时候像登录这些,如果由于网络原因,点击多次,就会加载多次,在这里重写一下onClick方法来解决.
**
* des:双击事件
*/
public abstract class OnDoubleClickListener implements View.OnClickListener {
private int count = 0;
private long firClick = 0;
private long secClick = 0;
@Override
public void onClick(View v) {
count++;
if (count == 1) {
firClick = System.currentTimeMillis();
} else if (count == 2) {
secClick = System.currentTimeMillis();
if (secClick - firClick < 1000) {
//双击事件
onDoubleClick(v);
}
count = 0;
firClick = 0;
secClick = 0;
}
}
protected abstract void onDoubleClick(View v);
}
//防止双击,响应多次,设置一个间隔时间
**
* des:防止重复点击
*/
public abstract class OnNoDoubleClickListener implements View.OnClickListener {
public static final int MIN_CLICK_DELAY_TIME = 1000;
private long lastClickTime = 0;
@Override
public void onClick(View v) {
long currentTime = Calendar.getInstance().getTimeInMillis();
if (currentTime - lastClickTime > MIN_CLICK_DELAY_TIME) {
lastClickTime = currentTime;
onNoDoubleClick(v);
}
}
protected abstract void onNoDoubleClick(View v);
}