2

可能重复:
如何在android中画一条线

我必须匹配两个选项,就像我们使用铅笔匹配列一样。如果我单击一列中的一行并将该行与另一列中的其他合适行匹配,则应在两行之间动态绘制该行。首先,我使用了拖放功能。但是我不能动态地画线。这怎么可能?请给我建议。

4

3 回答 3

2

获取Touch Events两个行元素,如果它们匹配,则绘制水平线使用以下代码:

canvas.drawLine(10, 10, 90, 10, paint);
canvas.drawLine(10, 20, 90, 20, paint);

编辑:请参阅如何在 android 中画一条线

于 2012-05-17T06:40:56.173 回答
1

使用 MapView 中的 Projection 将 GeoPoints 转换为“屏幕”点。之后,您可以使用 Path 绘制您想要的线条。第一个点应使用 path.moveTo(x, y) 指定,其余点应使用 path.lineTo(x, y) 指定。最后你调用 canvas.drawPath(path) 就完成了。

下面是我的 draw() 方法的代码,它围绕一组点绘制多边形。请注意,您不必像我在代码中那样使用 path.close() 。

public void draw(android.graphics.Canvas canvas, MapView mapView, boolean shadow)
{
if(shadow){
    if(isDrawing == false){
        return;
    }
    Projection proj = mapView.getProjection();

    boolean first = true;
    /*Clear the old path at first*/
    path.rewind();
    /* The first tap */
    Paint circlePaint = new Paint();
    Point tempPoint = new Point();
    for(GeoPoint point: polygon){
        proj.toPixels(point, tempPoint);
        if(first){
            path.moveTo(tempPoint.x, tempPoint.y);
            first = false;
            circlePaint.setARGB(100, 255, 117, 0);
            circlePaint.setAntiAlias(true);
            canvas.drawCircle(tempPoint.x, tempPoint.y, FIRST_CIRCLE_RADIOUS, circlePaint);
        }
        else{
            path.lineTo(tempPoint.x, tempPoint.y);
            circlePaint.setARGB(100, 235, 0, 235);
            circlePaint.setAntiAlias(true);
            canvas.drawCircle(tempPoint.x, tempPoint.y, CIRCLE_RADIOUS, circlePaint);
        }
    }
    /* If indeed is a polygon just close the perimeter */
    if(polygon.size() > 2){
        path.close();
    }
    canvas.drawPath(path, polygonPaint);
    super.draw(canvas, mapView, shadow);
}

}

参考:Android MapView中多个GeoPoints之间动态画线

于 2012-05-17T06:36:11.060 回答
1

在你的两列之间放置一个自定义视图,并准备好你的画布来绘制任何东西。当你做出了成功的选择。获取这两个选定视图的边界,并使用画布从起始视图的右端和下端到第二个视图的顶部和左侧画线。

于 2012-05-17T07:17:51.787 回答