Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android中谷歌地图上的圆形动画_Android_Google Maps_Animation - Fatal编程技术网

android中谷歌地图上的圆形动画

android中谷歌地图上的圆形动画,android,google-maps,animation,Android,Google Maps,Animation,在谷歌地图上使用valu动画制作圆形动画,但动画一直闪烁不定 这是一个密码 CircleOptions circleOptions = new CircleOptions() .center(searchStopPoint) //set center .radius(100) //set radius in meters .strokeColor(Color.TRANSPARENT)

在谷歌地图上使用valu动画制作圆形动画,但动画一直闪烁不定

这是一个密码

 CircleOptions circleOptions = new CircleOptions()
                .center(searchStopPoint)   //set center
                .radius(100)   //set radius in meters
                .strokeColor(Color.TRANSPARENT)
                .fillColor(0x555751FF)
                .strokeWidth(5);

    busStopCircle = googleMap.addCircle(circleOptions);
    ValueAnimator valueAnimator = new ValueAnimator();
    valueAnimator.setRepeatCount(ValueAnimator.INFINITE);
    valueAnimator.setRepeatMode(ValueAnimator.RESTART);
    valueAnimator.setIntValues(0, 100);
    valueAnimator.setDuration(3000);
    valueAnimator.setEvaluator(new IntEvaluator());
    valueAnimator.setInterpolator(new AccelerateDecelerateInterpolator());
    valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator valueAnimator) {
            float animatedFraction = valueAnimator.getAnimatedFraction();              
            busStopCircle.setRadius(animatedFraction * 100);
        }
    });

    valueAnimator.start();
有谁能帮我使动画平滑而不闪烁

谢谢

这是一个好主意。一种解决方法是使用圆而不是圆。
下面是一个示例:
创建圆:

// The drawable to use for the circle
    GradientDrawable d = new GradientDrawable();
    d.setShape(GradientDrawable.OVAL);
    d.setSize(500,500);
    d.setColor(0x555751FF);
    d.setStroke(5, Color.TRANSPARENT);

    Bitmap bitmap = Bitmap.createBitmap(d.getIntrinsicWidth()
            , d.getIntrinsicHeight()
            , Bitmap.Config.ARGB_8888);

    // Convert the drawable to bitmap
    Canvas canvas = new Canvas(bitmap);
    d.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
    d.draw(canvas);

    // Radius of the circle
    final int radius = 100;

    // Add the circle to the map
    final GroundOverlay circle = map.addGroundOverlay(new GroundOverlayOptions()
    .position(searchStopPoint, 2 * radius).image(BitmapDescriptorFactory.fromBitmap(bitmap)));
现在为圆形覆盖设置动画:

ValueAnimator valueAnimator = new ValueAnimator();
    valueAnimator.setRepeatCount(ValueAnimator.INFINITE);
    valueAnimator.setRepeatMode(ValueAnimator.RESTART);
    valueAnimator.setIntValues(0, radius);
    valueAnimator.setDuration(3000);
    valueAnimator.setEvaluator(new IntEvaluator());
    valueAnimator.setInterpolator(new AccelerateDecelerateInterpolator());
    valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator valueAnimator) {
            float animatedFraction = valueAnimator.getAnimatedFraction();
            circle.setDimensions(animatedFraction * radius * 2);
        }
    });

    valueAnimator.start();

更新:此问题

闪烁发生在真实设备或模拟器上?@Tasos两个设备我都看了文档,你有无限,然后重新启动-重新启动当动画结束,repeatCount为无限或正值时,动画从开始重新启动。--你为什么一直在为这些圆设置动画?我把这个圆放在特定的位置,使其高亮显示,并指示与其他位置不同的位置。需要在半透明的圆圈上加一些动画。是的,我明白,但是你能试着只做一次动画而不重复,作为测试,看看闪烁是否消失。这将把范围缩小到动画本身。我正在使用最新版本的播放服务。但圆渲染仍然没有那么快。即使谷歌声称问题已经解决,GroundOverlay仍然是CircleOptions更好的选择吗?