Как игнорировать действие одним касанием, прежде чем касаться двумя пальцами в пользовательском представлении Android? - PullRequest
1 голос
/ 13 марта 2019

Мне нужна функция масштабирования в моем приложении для рисования, поэтому я использую ScaleGestureDetector, но когда я выполняю действие касания двумя пальцами для масштабирования - до того, как оно запускает действие одним касанием и рисует что-то на Canvas, как я могу проверить, что холст теперь масштабируется и игнорировать действие одним касанием?

override fun onTouchEvent(event: MotionEvent): Boolean {
    scaleDetector.onTouchEvent(event)
    event.transform(touchMatrix)

    val x = event.x
    val y = event.y

    when (event.action and MotionEvent.ACTION_MASK) {
        MotionEvent.ACTION_DOWN -> {
            presenter.onPlotClick(x, y)
        }
        MotionEvent.ACTION_POINTER_DOWN -> {

        }
        MotionEvent.ACTION_MOVE -> {
            presenter.onFingerMoveOnPlot(x, y)
        }
        MotionEvent.ACTION_POINTER_UP -> {

        }
        MotionEvent.ACTION_UP -> {
            presenter.onFingerUpFromPlot()
        }
    }

    invalidate()
    return true
}

1 Ответ

0 голосов
/ 13 марта 2019

На мой взгляд, проблема в том, что оба пальца вряд ли коснутся экрана одновременно при выполнении жеста двумя пальцами.Но вы по-прежнему хотите, чтобы действия одним пальцем отображались сразу, поэтому вам не терпится отрисовать действие одним пальцем, иначе пользователь почувствует задержку.Итак, я мог бы попытаться немедленно выполнить действие одним пальцем, а затем, если второй палец обнаружен в течение определенного периода времени, а первый палец не сдвинулся с определенного расстояния, вы отменяете действие одним пальцем и вместо этогоинтерпретировать это как действие двумя пальцами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...