Android 自定义视图可在 imageview 上免费绘制

问题描述

我想创建一个扩展 ImageView 的自定义视图,以便我可以在它上面绘制 paths。我在这方面做了一些工作,但我不知道我错过了什么。 onDraw 它被调用,也是 onTouchEvent

@SuppressLint("AppCompatCustomView")
class BlackImageView @JvmOverloads constructor(
    context: Context,attrs: AttributeSet? = null,defStyleAttr: Int = 0
) : ImageView(context,attrs,defStyleAttr) {

    var path: Path = Path()
    var paint: Paint = Paint().apply {
        isAntiAlias = true
        color = Color.RED
        style = Paint.Style.STROKE
    }

    override fun onTouchEvent(event: MotionEvent?): Boolean {
        event?.let {
            when (it.action) {
                MotionEvent.ACTION_DOWN -> {
                    path.moveTo(x,y)
                    return true
                }
                MotionEvent.ACTION_MOVE -> {
                    path.lineTo(x,y)
                }

                else -> {
                    invalidate()
                    return true
                }
            }
        }

        invalidate()
        return true
    }

    override fun onDraw(canvas: Canvas?) {
        super.onDraw(canvas)
        canvas?.drawPath(path,paint)
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)