Android Google Maps v2: animate marker size

2020-07-17 05:12发布

I'm trying to animate the size of a marker as it is added to a map, basically I want the marker to grow. I can't see any way of getting to the actual view for the marker so I don't think I can use the standard Android animation techniques (e.g. ObjectAnimator).

The only way I can see to do this would be to implement my own animation and use the setIcon method to change the marker icon.

Is there any other and ideally better way of doing this?

I'm working in Xamarin but can port Java code if necessary.

2条回答
爷的心禁止访问
2楼-- · 2020-07-17 05:54

You may try something like this

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();
查看更多
萌系小妹纸
3楼-- · 2020-07-17 06:11

Yes you are right there is not direct method to do it. Instead, you can use handler that will get called after say every 500ms and in that you can setIcon of marker.

Use this link for reference; How to animate marker in android map api V2?

查看更多
登录 后发表回答