【发布时间】:2021-05-23 23:36:18
【问题描述】:
美好的一天! 我遇到了这样一个问题,我需要在手指的触摸下画一个圆圈。
我尝试使用以下代码:
private fun pressFinger() {
mFirst.setOnTouchListener(View.OnTouchListener { v, event ->
val x = event.x
val y = event.y
when (event.action) {
MotionEvent.ACTION_DOWN -> {
drawCircle(x, y)
}
}
return@OnTouchListener true
})
}
fun drawCircle(x: Float, y: Float) {
val width: Int = x.toInt()
val height: Int = y.toInt()
val bitmap = (mFirst.getDrawable() as BitmapDrawable).bitmap
val workingBitmap: Bitmap = Bitmap.createBitmap(bitmap)
val mutableBitmap = workingBitmap.copy(Bitmap.Config.ARGB_8888, true)
val canvasBitmap = Canvas(mutableBitmap)
val paint = Paint(Paint.ANTI_ALIAS_FLAG)
paint.style = Paint.Style.FILL
paint.xfermode = PorterDuffXfermode(PorterDuff.Mode.CLEAR)
canvasBitmap.drawCircle(width.toFloat(), height.toFloat(), 180F, paint)
mFirst.setImageBitmap(mutableBitmap)
drawUtils.draw()
}
问题是圆圈不是画在手指下面,而是在侧面。
我还想指出,放置在 ImageView 中的图像尺寸较大,我使用 scaleType = "cropCenter"。 事实证明,我需要在放置在 ImageView 中的图像上准确地获取手指的位置,而不仅仅是在屏幕上。
如果有人知道问题的正确答案,我将不胜感激。
【问题讨论】:
标签: android canvas bitmap position draw