我正在开发一个在地图上绘制节点的应用程序,每个节点都有由它们之间的线表示的边。我已经使用Canvas和drawLine()绘制了边缘,但是如果线条本身可以单击,那将很有用。我的意思是一种允许用户触摸线路或认为他们正在触摸线路并且事件可以触发的方法。 (例如显示边缘信息等)

我无法正确地将触摸事件附加到使用Canvas绘制的线条上,因此我正在考虑将ImageViews放置在所绘制的每条边缘线的末端之间。 ImageView可能是一个点,因此很清楚触摸事件在何处触发。

还有其他建议吗?我主要是在寻找我错过的想法。也许Android API中有一些我不知道的东西可以帮您解决这个问题。

在此先感谢您提供任何提示!

最佳答案

使用路径画线:

Path linePath;
Paint p;
RectF rectF;
float point1X, point1Y, point2X, point2Y;

// initialize components

// draw the line
linePath.moveTo(point1X, point1Y);
linePath.lineTo(point2X, point2Y);

canvas.drawPath(linePath, p);

linePath.computeBounds(rectF, true);


覆盖onTouchEvent(MotionEvent)

@Override
public boolean onTouchEvent(MotionEvent event) {

    float touchX = event.getX();
    float touchY = event.getY();

    switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:
        if (rectF.contains(touchX, touchY)) {
            // line has been clicked
        }
        break;
    }
    return true;
}

09-06 09:21