需求
希望页面里的元素,可以防止用户快速点击。但是单用户点击一个元素后,仍然可以快速点击页面上另一个元素。也就是两个元素的快速点击不互相影响
当时想到的是,从代码事件分发上拦截,但是后来想到实现不了这个需求。
每个元素都应该有自己的上次点击的时间,这样才不会互相影响。
所以,我们可以实现一个Listener,然后在这个监听里面做拦截,项目中用到的Listener 都继承自这个Listener.
实现:
package com.example.util;
import android.view.View;
/**
* =======================================================================================
* 作 者:caoxinyu
* 创建日期:2021/6/15.
* 类的作用:
* 修订历史:
* =======================================================================================
*/
public class AvoidQuickClickListener implements View.OnClickListener {
private long lastClickTime;
public static final int Duration = 100;
private View.OnClickListener mLs;
public AvoidQuickClickListener(View.OnClickListener ls){
mLs= ls;
}
public void onClick(View view){
if(!(System.currentTimeMillis() - lastClickTime > Duration)){
return ;
}
lastClickTime = System.currentTimeMillis();
if(mLs != null ){
mLs.onClick(view);
}
}
}