为什么MotionEvent.getx()在onTouchEvent和onDraw中的结果不同?

时间:2018-12-22 08:52:05

标签: android kotlin

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 :(得分:0)

很可能在您触摸视图后就不会立即调用方法onDraw()

在方法invalidate()的末尾添加对onTouchEvent()的调用,这样它将在内部调用方法onDraw()并在同一位置绘制。