2015-09-09 58 views
1

我试图在标记添加到地图时设置动画的大小,基本上我要标记增长。我看不到任何获得标记实际视图的方式,所以我不认为我可以使用标准的Android动画技术(例如ObjectAnimator)。Android Google Maps v2:设置动画标记大小

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

有没有其他的理想的更好的方式来做到这一点?

我在Xamarin中工作,但如果需要可以移植Java代码。

+1

技术上你可以使用'ObjectAnimator'与例如'“图标”'酒店提供你在你的'target'对象有'setIcon'方法,并创建它作为如下:'ObjectAnimator.ofInt(this,“icon”,10,100)' – pskink

+0

@pskink你是对的,这是我最终选择的方法。发表您的评论作为答案,我会接受。 –

回答

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

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

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

相关问题