Имитация трек-пэда с двойным нажатием против одиночного крана - PullRequest
0 голосов
/ 05 февраля 2019

Я пытаюсь смоделировать логику нажатия и удержания в моем приложении для 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");
                }
...