本教程将介绍Android:如何检查矩形是否包含触摸点?的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。
问题描述
我会尝试开发一个可以绘制平面测量图的应用程序。因此,每个房间都有自己的或,如果我触摸房间,我希望显示具有该ID或名称的Toast消息。问题是怎么检查是否以及哪条路径被触摸!!
我看到很多关于这个问题的话题讨论。有人说使用getBounds
方法,然后包含检查接触点是否在RECT中的方法。但是,我猜getBounds
返回包含路径的最小Rect
,对吗?
因此,房间具有不同的自定义几何形状,因此,如果我得到关于2个封闭房间的界限,方法可以返回一组共享的点。坏的!每个房间都只有他们的面积点。我怎么解决此问题?
在iOS中我可以使用PathContainsPoint
方法,但不幸的是,Android Path没有类似的方法。
推荐答案
好的,我解决了问题。我发布了示例代码:
Path p;
Region r;
@Override
public void onDraw(Canvas canvas) {
p = new Path();
p.moveTo(50, 50);
p.lineTo(100, 50);
p.lineTo(100, 100);
p.lineTo(80, 100);
p.close();
canvas.drawPath(p, paint);
RectF rectF = new RectF();
p.computeBounds(rectF, true);
r = new Region();
r.setPath(p, new Region((int) rectF.left, (int) rectF.top, (int) rectF.right, (int) rectF.bottom));
}
public boolean onTouch(View view, MotionEvent event) {
Point point = new Point();
point.x = event.getX();
point.y = event.getY();
points.add(point);
invalidate();
Log.d(TAG, "point: " + point);
if(r.contains((int)point.x,(int) point.y))
Log.d(TAG, "Touch IN");
else
Log.d(TAG, "Touch OUT");
return true;
}
好了关于Android:怎么检查矩形是否包含触摸点?的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。