本文轉自: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()
即可!