Android Google Maps v2:动画标记大小

时间:2015-09-09 08:42:53

标签: android google-maps animation

我正在尝试设置标记的大小,因为它已添加到地图中,基本上我希望标记增长。我无法看到任何方式进入标记的实际视图,所以我认为我不能使用标准的Android动画技术(例如ObjectAnimator)。

我能看到的唯一方法是实现我自己的动画并使用setIcon方法更改标记图标。

还有其他更理想的做法吗?

我在Xamarin工作,但如有必要可以移植Java代码。

2 个答案:

答案 0 :(得分:6)

您可以尝试这样的事情

final Marker marker = map.addMarker(new MarkerOptions().position(new LatLng(0, 0)).title("Marker"));
    final Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_temperature_kelvin_black_48dp);
    final Bitmap target = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);
    final Canvas canvas = new Canvas(target);
    ValueAnimator animator = ValueAnimator.ofFloat(0, 1);
    animator.setDuration(500);
    animator.setStartDelay(1000);
    final Rect originalRect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
    final RectF scaledRect = new RectF();
    animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            float scale = (float) animation.getAnimatedValue();
            scaledRect.set(0, 0, originalRect.right * scale, originalRect.bottom * scale);
            canvas.drawBitmap(bitmap, originalRect, scaledRect, null);
            marker.setIcon(BitmapDescriptorFactory.fromBitmap(target));
        }
    });
    animator.start();

答案 1 :(得分:1)

是的,你是对的,没有直接的方法来做到这一点。相反,您可以使用将在每500毫秒后调用的处理程序,并且您可以使用setIcon标记。

使用此链接作为参考; How to animate marker in android map api V2?