我想检测的双击但没有第一触发单个抽头。 我试过双击听众,但在检测前双,这是合理的我想你总会得到onSingleTapUp。 但在我的应用程序,我真的不希望一次点击回调时,有在途中双击。
我意识到没有应用程序可以预测未来(或者我会很有钱),但我想,刚刚推出的单次点击一个计时器,如果有一些时间内没有双击,然后做单一的点击。 但是这似乎并没有工作,因为一旦我启动定时器,定时器运行,第二原从来没有产生一个事件。 这里是使用aync任务我的代码,我也有一个计时器试了一下。
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的第一次敲击就好了。 我超时是在doInBackground测试,所以我有很多时间做第二次敲击1秒。 注意,Log.d( “KitView”, “onSingleTapUp DONE”); 立即运行我做的第一次轻触,所以onSingleTapUp不挂。
问题是,在1秒内再次录音什么都不做。 还有就是onSingleTapUp没有呼叫,直到之后的睡眠已经完成,并已onPostExecute运行。 所以Log.d( “KitView”, “任务中运行”); 从未发生过这是我将检测双击主场迎战当然单一的点击。
我不知道为什么aynctask阻塞事件,任何想法? 谢谢