如何在android中动态绘制一条线

时间:2012-05-17 06:28:36

标签: android line

  

可能重复:
  How to draw a line in android

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

3 个答案:

答案 0 :(得分:2)

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

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

编辑:请参阅 How to draw a line in android

答案 1 :(得分:1)

使用MapView中的Projection将GeoPoints转换为“屏幕”点。之后,您可以使用路径绘制所需的行。第一个点应该用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);
}

}

参考:Dynamically draw lines between multiple GeoPoints in Android MapView

答案 2 :(得分:1)

在两列之间放置一个自定义视图,并准备好画布以绘制任何内容。选择成功后。获取这两个选定视图的边界,并使用画布从开始视图的右下端到第二个视图的顶部和左侧绘制线条。