2015-09-09 98 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?

相關問題