Android动态更改圆圈大小时,只有一半的圆圈更新正确

5

所以我已经为用户提供了使用seekbar在MapView中更改圆形覆盖物半径的控件。

然而,当您拖动seekbar以更改圆的半径时,只有底部部分会平滑更新:

WRONG

上半部分是圆的半径之前的大小,下半部分是圆的当前半径。底部平滑更新(随着seekbar的进度),但上部分保持静态约半秒钟。

你以前见过类似的情况吗?这是我正在使用的RadiusOverlay对象中的onDraw方法:

public void draw(Canvas canvas, MapView mapView, boolean shadow) {
    super.draw(canvas, mapView, shadow); 

    Point point = new Point();

    Projection projection = mapView.getProjection();
    projection.toPixels(mGeoPoint, point);
    float projectedRadius = projection.metersToEquatorPixels((float)(mRadius * 1609.3d));

    Paint paint = new Paint();
    paint.setStyle(Paint.Style.FILL);
    paint.setARGB(50, 41, 166, 247);
    paint.setAntiAlias(true);

    canvas.drawCircle((float)point.x, (float)point.y, projectedRadius, paint);
}

感谢您的关注。
谢谢查看。
1个回答

3

所以我将下面的代码添加到绘制圆形覆盖物的方法中:

mController.animateTo(mLocationOverlay.getMyLocation());

其中mController是一个LocationController,mLocationOverlay是一个LocationOverlay(我猜这有点显然)。

无论如何,添加了那行代码后,圆圈的动画就变得平滑了。这可能与覆盖物在地图上的工作方式有关,如果它们没有居中,它们就会被裁剪或者其他什么问题。谁知道呢。但是我再次测试了一下,删除那行代码,确实又出现了裁剪的情况。所以我想这就是解决方案。耸耸肩

如果有人有真正的解释,请随意提供。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接