1

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

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

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

提前感谢您的任何提示!

4

1 回答 1

3

使用路径画线:

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;
}
于 2013-08-16T14:13:42.357 回答