可能重复:
如何绘制在Android上线
我有当我们用铅笔在比赛做列匹配两种选择。 如果我在一列中点击一个行,并与其它柱然后动态行应该两行之间绘制其它合适的行匹配行。 首先,我去与拖放功能。 但我不能画线dynamically.How这是可能的? 请给我建议。
可能重复:
如何绘制在Android上线
我有当我们用铅笔在比赛做列匹配两种选择。 如果我在一列中点击一个行,并与其它柱然后动态行应该两行之间绘制其它合适的行匹配行。 首先,我去与拖放功能。 但我不能画线dynamically.How这是可能的? 请给我建议。
从使用的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之间线路
获取Touch Events
的两个行元素,如果他们匹配画出水平线使用下面的代码:
canvas.drawLine(10, 10, 90, 10, paint);
canvas.drawLine(10, 20, 90, 20, paint);
编辑:请参阅如何画在Android上线
请将您的两列,并准备你的画布之间的自定义视图中绘制任何东西。 当你做一个成功的选择。 得到的这两个所选视图的边界,并使用帆布从开始视图顶部和左第二视图的右和底端绘制线。