谷歌地图Android API v2:借助ValueAnimator可视化搜索半径

10

我想在Google地图视图中添加一个类似于此图片上看到的圆形动画。

enter image description here

圆形应该从中心脉动到最大半径,指示当前用户的位置和搜索区域。

以下是相关的代码块:

Circle circle = mMap.addCircle(new CircleOptions()
     .center(new LatLng(lat, lon))
     .strokeColor(Color.CYAN).radius(1000));
    valueAnimator = new ValueAnimator();
    valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator valueAnimator) {
        float animatedFraction = valueAnimator.getAnimatedFraction();
         circle.setRadius(animatedFraction * 1000);
         circle.setStrokeWidth(1 + animatedFraction * 7);
         }
        });

使用这段代码,我只能看到静态圆形描边,没有任何动画。

非常感谢您的帮助。

1个回答

31

简单 :)

    final Circle circle = MAP.addCircle(new CircleOptions().center(EGYPT)
            .strokeColor(Color.CYAN).radius(100));

    ValueAnimator vAnimator = new ValueAnimator();
    vAnimator.setRepeatCount(ValueAnimator.INFINITE);
    vAnimator.setRepeatMode(ValueAnimator.RESTART);  /* PULSE */
    vAnimator.setIntValues(0, 100);
    vAnimator.setDuration(1000);
    vAnimator.setEvaluator(new IntEvaluator());
    vAnimator.setInterpolator(new AccelerateDecelerateInterpolator());
    vAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator valueAnimator) {
            float animatedFraction = valueAnimator.getAnimatedFraction();
            // Log.e("", "" + animatedFraction);
            circle.setRadius(animatedFraction * 100);
        }
    });
    vAnimator.start();

动画在标记出现之前都是有效的。当标记出现时,动画就消失了。无论我在哪里调用 vAnimator.start();,它都不再可视化,但同时我可以在 LogCat 中看到它正在处理。您有什么假设,为什么动画与标记不可视化? - Juniper
1
我的圆形有填充颜色,但当它被动画化时就消失了。我该怎么办? - DixieFlatline

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