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得到不同的结果。这个问题困扰着我。
地方帮帮我,谢谢。
最有可能的是,方法onDraw()
不会在您触摸视图后立即被调用。
在方法onTouchEvent()
的末尾添加对 invalidate()
的调用,以便它将在内部onDraw()
调用该方法并在同一位置绘制。