【问题标题】:Android Dynamically changing circle size only half the circle updates correctlyAndroid动态改变圆圈大小只有一半的圆圈正确更新
【发布时间】:2012-08-24 03:20:13
【问题描述】:

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

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

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

以前见过这样的事情吗?这是我正在使用的 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);
}

感谢观看。

【问题讨论】:

    标签: android android-canvas android-maps


    【解决方案1】:

    所以我将这个添加到绘制圆圈覆盖的方法中:

    mController.animateTo(mLocationOverlay.getMyLocation());
    

    mController 是 LocationController,mLocationOverlay 是 LocationOverlay(我想这有点明显)。

    无论如何,添加那条线会使圆圈动画流畅。这可能与叠加层在地图上的工作方式有关,如果它们没有居中,它们会被裁剪或其他东西。谁知道。但是我通过删除那条线再次对其进行了测试,果然它再次被剪掉了。所以我想这就是解决方案。 耸耸肩

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-15
      • 2021-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-19
      • 1970-01-01
      相关资源
      最近更新 更多