我想檢測一個雙擊但是沒有先觸發一次點擊。我嘗試過雙擊監聽器,但是在檢測到雙精度之前總是得到一個onSingleTapUp,這是合理的我猜。但在我的應用程序中,我真的不希望單擊回撥時,雙擊的方式。Android檢測雙擊不先點擊一下
我意識到沒有應用程序可以預測未來(或者我會非常有錢),但我在想,只需單擊一次即可啓動計時器,如果在某段時間內沒有雙擊,那麼請單擊。但這似乎不起作用,因爲一旦我啓動計時器並且計時器正在運行,第二次敲擊就不會生成事件。這裏是我的代碼使用一個異步任務,我也嘗試了一個計時器。
mGD = new GestureDetector(getContext(), new SimpleOnGestureListener() {
@Override
public boolean onSingleTapUp(MotionEvent ev) {
//Log.d("KitView", "onSingleTapUp "+ev.toString());
class DblTapTask extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
Log.d("KitView", "onPreExecute");
}
protected Void doInBackground(Void... args) {
Log.d("KitView", "doInBackground");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
protected void onPostExecute(Void result) {
Log.d("KitView", "onPostExecute");
doSigleTapAction();
mDblTapTask=null;
}
};
if(mDblTapTask==null) {
Log.d("KitView", "START TASK");
mDblTapTask = new DblTapTask();
mDblTapTask.execute();
} else {
Log.d("KitView", "TASK RUNNING");
doDoubleTapAction();
}
Log.d("KitView", "onSingleTapUp DONE");
return true;
} // end onSingleTapUp
}); // end new GestureDetector
在這個例子中,我在onSingleTapUp上就第一次點擊就好了。我的超時是1秒在doInBackground測試,所以我有很多時間做第二次水龍頭。注意Log.d(「KitView」,「onSingleTapUp DONE」);立即運行我做第一次水龍頭,所以onSingleTapUp不掛。
現在的問題是,在1sec內再次錄音什麼也不做。在睡眠完成並且onPostExecute已經運行之前,沒有對onSingleTapUp的調用。所以Log.d(「KitView」,「TASK RUNNING」);從來沒有發生這是我會發現雙擊與單擊當然的地方。
我不知道爲什麼aynctask阻止事件,任何想法?謝謝
嘗試使用http://developer.android.com/reference/android/view/GestureDetector.SimpleOnGestureListener.html –