制作画布drawLine()的技术可点击?

时间:2013-08-16 13:55:38

标签: android android-canvas

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

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

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

提前感谢任何提示!

1 个答案:

答案 0 :(得分:2)

使用路径画线:

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;
}