Google Maps Android API v2:通过ValueAnimator的帮助可视化搜索半径 [英] Google Maps Android API v2: Visualizing the search radius with the helping of ValueAnimator

查看:175
本文介绍了Google Maps Android API v2:通过ValueAnimator的帮助可视化搜索半径的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想为Google地图视图添加一个动画圈,类似于您在此图片上看到的圈子。





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

这里是相关的代码块

$ pre $ 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);
}
});

使用此代码,我只能看到没有任何动画的静态圆形笔画。



任何帮助将不胜感激。
在此先感谢。

解决方案

简单地说:)

<$ (Circle)=圆形圆(Circle)圆形圆(Circle Circle Circle)()。

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();


I want to add an animated circle to Google Maps view similar to the circle you see on this image.

The circle should be pulsing from the center to the largest radius indicating current user's location and the area of searching.

Here is relevant code block

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);
         }
        });

With this code I am only able to see static circle stroke without any animation.

Any help will be appreciated. Thanks in advance.

解决方案

Simply :)

    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();

这篇关于Google Maps Android API v2:通过ValueAnimator的帮助可视化搜索半径的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆