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;
}
}
/* 设置双击监听*/
findViewById(R.id.fragment).setOnTouchListener(new OnDoubleClickListener(new OnDoubleClickListener.DoubleClickCallback() {
@Override
public void onDoubleClick() {
if (lcd.isShown()) {
lcd.setVisibility(View.GONE);
} else {
lcd.setVisibility(View.VISIBLE);
}
Logs.i(TimeUtil.long2time(System.currentTimeMillis(), Constant.formatPhoto));
}
}));
fragment为被监听的控件