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

时间:2012-08-23 18:28:46

标签: android android-canvas android-maps

所以我给用户控件使用搜索栏来改变MapView中圆形叠加对象的半径。

但是,当你拖动搜索条来改变圆的半径时,只有它的底部会顺利更新:

WRONG

上半部分是圆的半径,底部是当前圆的半径。底部部分平滑更新(以及搜索栏上的进度),但顶部保持静止半秒左右。

以前见过这样的事吗?这是我正在使用的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 个答案:

答案 0 :(得分:3)

所以我把它添加到绘制圆形叠加层的方法中:

mController.animateTo(mLocationOverlay.getMyLocation());

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

无论如何添加该行使得圆圈动画平滑。它可能与地图上的叠加层如何工作有关,如果它们没有居中,它们会剪辑或其他东西。谁知道。但我通过删除该行再次测试它,并确定它再次被修剪。所以我想这就是解决方案。 耸肩

如果有任何人有真正的解释,请随时提供。