本文转自:Android实现双击事件的监听
Android实现view的双击事件监听,一般使用的场景,列表双击顶部回到第一条!
双击监听
/**
* view双击监听事件
*/
public class OnDoubleClickListener implements View.OnTouchListener {
private int count = 0;//点击次数
private long firstClick = 0;//第一次点击时间
private long secondClick = 0;//第二次点击时间
/**
* 两次点击时间间隔,单位毫秒
*/
private final int totalTime = 1000;
/**
* 自定义回调接口
*/
private DoubleClickCallback mCallback;
public interface DoubleClickCallback {
void onDoubleClick();
}
public OnDoubleClickListener(DoubleClickCallback callback) {
super();
this.mCallback = callback;
}
/**
* 触摸事件处理
*
* @param v
* @param event
* @return
*/
@Override
public boolean onTouch(View v, MotionEvent event) {
if (MotionEvent.ACTION_DOWN == event.getAction()) {//按下
count++;
if (1 == count) {
firstClick = System.currentTimeMillis();//记录第一次点击时间
} else if (2 == count) {
secondClick = System.currentTimeMillis();//记录第二次点击时间
if (secondClick - firstClick < totalTime) {//判断二次点击时间间隔是否在设定的间隔时间之内
if (mCallback != null) {
mCallback.onDoubleClick();
}
count = 0;
firstClick = 0;
} else {
firstClick = secondClick;
count = 1;
}
secondClick = 0;
}
}
return true;
}
}
使用
header.setOnTouchListener(new OnDoubleClickListener(new OnDoubleClickListener.DoubleClickCallback() {
@Override
public void onDoubleClick() {
if (recyclerView!=null){
recyclerView.smoothScrollToPosition(0);
}
}
}));
更新:
如果该view设置了点击事件,会发现无法响应!
这个也很好处理:我们在第一次点击或者是第二次点击判断出不是双击的时候,调用view.performClick()
即可!