Я пытаюсь смоделировать логику нажатия и удержания в моем приложении для Android.Моя проблема в том, что когда я выполняю двойное касание, оно выполняет два отдельных одиночных касания, а также двойное касание.Я думал о создании отдельного потока в моем коде с одним касанием, чтобы подождать и посмотреть, произойдет ли другое касание, но я не уверен, что это элегантное решение.Мой код ниже
if (event.getAction() == MotionEvent.ACTION_UP) {
lastUpX = (int)event.getX();
lastUpY = (int)event.getY();
//Get difference between lastUp and lastDown
int lastDownXDiff = Math.abs(lastDownX-lastUpX);
int lastDownYDiff = Math.abs(lastDownY-lastUpY);
Log.e("Down differences", lastDownXDiff + " " + lastDownYDiff);
if ((System.currentTimeMillis()-lastDownTime < 100) && lastDownXDiff < 50 && lastDownYDiff < 50)
messageQueue.add("CLICK LMB");
messageQueue.add("RELEASE LMB");
}
else if (event.getAction() == MotionEvent.ACTION_DOWN) {
lastDownX = (int)event.getX();
lastDownY = (int)event.getY();
if (lastDownTime == -1) {
lastDownTime = System.currentTimeMillis();
}
//If the user double taps, send a left mouse button click
else {
if (System.currentTimeMillis()-lastDownTime <= 300) {
messageQueue.add("HOLD LMB");
Log.e("Double tap", "Double tap");
}