在 Canvas 中,我画了一个正方形并在角落放置了圆圈,它们用作按钮,您可以使用拖放来调整形状的大小。
如果我指定了底角的坐标x1, y2,那么我第一次触摸就很难进去了,那么我需要一个如图所示的框架,条件是如果触摸在框架内,你可以调整大小.
但是如何实现呢?我想出了这个主意,但在我看来吃起来更容易。
if ((x > x1-max && x < x1+max && y > y2-max && y < y2+max) && touchActive) {
x1 = event!!.x
touchActive = false
invalidate()
} else{
touchActive = true
}
看了这段代码,你想了很久,如果我需要重做逻辑,我需要添加这么多条件,以至于我总是无法记住它。
添加了一个答案。
class ExampleRect(context: Context, att : AttributeSet) : View(context, att) {
private val rect : RectF = RectF()
val p = Paint().apply {
color = Color.DKGRAY
strokeWidth = 10f
}
override fun onDraw(canvas: Canvas?) {
super.onDraw(canvas)
rect.set(400f, 40f, 40f, 400f)
canvas?.apply {
drawRect(rect, p)
}
}
override fun onTouchEvent(event: MotionEvent?): Boolean {
println("click -> ${rect.contains(event!!.x, event.y)}")
return true
}
}
这就是发生的事情。



它可以是这样的:
有必要在角点周围创建矩形 Rect(或 RectF),并使用 方法检查这些矩形之一中是否发生触摸
Rect.contains(float x , float y)