Почему MotionEvent.getx () не совпадает с onTouchEvent и onDraw? - PullRequest
0 голосов
/ 22 декабря 2018
private lateinit var lastEvent: MotionEvent
override fun onDraw(canvas: Canvas?) {
   ...
   Log.d("demo","ondraw lastEvent.x="+lastEvent.x+"  lastEvent.y="+lastEvent.y)
   Log.d("demo","ondraw lastEvent.rawX="+lastEvent.rawX+"  lastEvent.rawY="+lastEvent.rawY)
   ...
}

override fun onTouchEvent(event: MotionEvent?): Boolean {
   ...
   when (event.action) {
        MotionEvent.ACTION_DOWN -> {
            return true
        }
        MotionEvent.ACTION_MOVE -> {
            lastEvent = event
            Log.d("demo","onTouchEvent lastEvent.x="+lastEvent.x+"  lastEvent.y="+lastEvent.y)
        }
        else -> {
        }
    }
  ...
}

Почему lastEvent.x дает разные результаты? Эта проблема беспокоит меня.

Помогите, спасибо.

1 Ответ

0 голосов
/ 22 декабря 2018

Скорее всего, метод onDraw() не вызывается, как только вы прикоснетесь к представлению.

Добавьте вызов к invalidate() в конце метода onTouchEvent(), чтобы он вызывалметод onDraw() внутри и рисовать в том же месте.

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