У меня есть функция, которая позволяет пользователю рисовать на экране. В эмуляторе работает корректно; куда я прикасаюсь, экран красится. Однако, когда я тестировал его на своем планшете, он сильно затмевался. Если я нажму на середину экрана, он закрасится в правом нижнем углу. Кто-нибудь знает, как исправить это смещение?
private fun handleTouch(event: MotionEvent): Boolean {
val drawable = drawable ?: return false
val imageWidth = drawable.intrinsicWidth
val imageHeight = drawable.intrinsicHeight
val viewWidth = width
val viewHeight = height
val scaleX = viewWidth.toFloat() / imageWidth
val scaleY = viewHeight.toFloat() / imageHeight
val scale = Math.min(scaleX, scaleY)
val correctedX = ((event.x - (viewWidth - imageWidth * scale) / 2) / scale).toInt()
val correctedY = ((event.y - (viewHeight - imageHeight * scale) / 2) / scale).toInt()
when (event.action) {
MotionEvent.ACTION_MOVE -> {
drawOnImage(correctedX, correctedY)
return true
}
MotionEvent.ACTION_DOWN -> {
performClick()
return true
}
MotionEvent.ACTION_UP -> {
drawOnImage(correctedX, correctedY)
drawingListener?.onDrawing()
return true
}
}
return false
}
fun drawOnImage(x: Int, y: Int) {
val canvas = Canvas((drawable as BitmapDrawable).bitmap)
canvas.drawCircle(x.toFloat(), y.toFloat(), paint.strokeWidth / 2, paint)
invalidate()
}
xml
Подробнее здесь: https://stackoverflow.com/questions/790 ... in-android