如何动态地画一条线在android系统[复制](How to draw a line dynamic

2019-09-17 06:47发布

可能重复:
如何绘制在Android上线

我有当我们用铅笔在比赛做列匹配两种选择。 如果我在一列中点击一个行,并与其它柱然后动态行应该两行之间绘制其它合适的行匹配行。 首先,我去与拖放功能。 但我不能画线dynamically.How这是可能的? 请给我建议。

Answer 1:

从使用的MapView投影以GeoPoints转换为“屏幕”点。 在此之后,你可以使用路径来绘制所需的线。 第一点应与path.moveTo(X,Y),并用path.lineTo其余(X,Y)来指定。 在最后你调用canvas.drawPath(路径)和你做。

下面是从我的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之间线路



Answer 2:

获取Touch Events的两个行元素,如果他们匹配画出水平线使用下面的代码:

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

编辑:请参阅如何画在Android上线



Answer 3:

请将您的两列,并准备你的画布之间的自定义视图中绘制任何东西。 当你做一个成功的选择。 得到的这两个所选视图的边界,并使用帆布从开始视图顶部和左第二视图的右和底端绘制线。



文章来源: How to draw a line dynamically in android [duplicate]
标签: android line