【发布时间】:2017-06-13 03:49:05
【问题描述】:
我正在构建一个自定义视图。
它有 4 条弧线。
我在onDraw() 期间使用RectF 形状绘制弧线:
// arcPaint is a Paint object initialized
// in the View's constructor
arcPaint.setStrokeWidth(strokeWidth);
arcPaint.setColor(arcColor);
// Draw arcs, arc1, arc2, arc3 & arc4 are
// measured and initialized during onMeasure()
canvas.drawArc(arc1, startAngle, arc1Angle, false, arcPaint);
canvas.drawArc(arc2, startAngle, arc2Angle, false, arcPaint);
canvas.drawArc(arc3, startAngle, arc3Angle, false, arcPaint);
canvas.drawArc(arc4, startAngle, arc4Angle, false, arcPaint);
所以,结果是:
如果我使用此代码使用canvas.drawRect() 绘制RectF 对象:
canvas.drawRect(arc1, arcPaint);
canvas.drawRect(arc2, arcPaint);
canvas.drawRect(arc3, arcPaint);
canvas.drawRect(arc4, arcPaint);
结果是这样的:
将所有弧线和矩形画在一起,给出了这个:
我知道我可以重写 onTouchEvent() 方法并获取 X、Y 坐标,但我不知道每个坐标如何与画布中绘制的每个形状相关。
我想要做的是检测何时在canvas 内触摸弧线而不是矩形,我该如何实现?
编辑:
不是矩形,我的意思是,我不想检测用户何时触摸这些区域(矩形的角):
【问题讨论】:
-
有趣的问题
-
这里不是很清楚你在追求什么。您想在弧上注册触摸,而不是矩形?弧与边界矩形或其他弧的矩形的重叠部分如何?
-
查看编辑@MikeM。
-
视觉辅助工具非常有用。 :-) 所以,如果我没有正确地关注你,你只是想强调
Rect#contains(x, y)对你不起作用,是吗? -
是的,你是对的。
Rect#contains(x, y)没有帮助。
标签: android android-canvas android-custom-view