2016-10-31 4 views
2

私が達成しようとしていることは、とてもシンプルだと思っていますが、うまくいきません。 マップにマーカーを追加しましたが、ハートビートをアニメーション化しようとしています。Googleマップでマーカーをアニメーション化する方法は?

私はどんな提案が 、感謝されるプラスの外部ライブラリを使用して、同様のオプションすることができますが、運のない、

ObjectAnimator pulse = ObjectAnimator.ofPropertyValuesHolder(userLocation, 
      PropertyValuesHolder.ofFloat("scaleX",2f), 
      PropertyValuesHolder.ofFloat("scaleY",2f) 
      ); 
    pulse.setDuration(310); 
    pulse.setRepeatCount(ObjectAnimator.INFINITE); 
    pulse.setRepeatMode(ObjectAnimator.REVERSE); 
    pulse.start(); 

を次のコードを試してみました、私はちょうど1を見つけられませんでしたしています。

答えて

7

一般的なアプローチは、Cabezas answerによく記載されています。彼の答えに加えて、あなたの仕事のためにマーカーのビットマップ設定(アニメーションのフレームごとにInterpolatorに従ってサイズ変更)のためにそれを適用する必要があります。例えば、あなたがこのようなメソッドを使用してそれを行うことができます:16は、アニメーションの1つのフレーム、1f + 0.05f * tの期間である

private void pulseMarker(final Bitmap markerIcon, final Marker marker, final long onePulseDuration) { 
    final Handler handler = new Handler(); 
    final long startTime = System.currentTimeMillis(); 

    final Interpolator interpolator = new CycleInterpolator(1f); 
    handler.post(new Runnable() { 
     @Override 
     public void run() { 
      long elapsed = System.currentTimeMillis() - startTime; 
      float t = interpolator.getInterpolation((float) elapsed/onePulseDuration); 
      marker.setIcon(BitmapDescriptorFactory.fromBitmap(scaleBitmap(markerIcon, 1f + 0.05f * t))); 
      handler.postDelayed(this, 16); 
     } 
    }); 
} 

- マーカーアイコンとscaleBitmap()の大きさの5%の増加と減少があるさ:

public Bitmap scaleBitmap(Bitmap bitmap, float scaleFactor) { 
    final int sizeX = Math.round(bitmap.getWidth() * scaleFactor); 
    final int sizeY = Math.round(bitmap.getHeight() * scaleFactor); 
    Bitmap bitmapResized = Bitmap.createScaledBitmap(bitmap, sizeX, sizeY, false); 
    return bitmapResized; 
} 

と呼び出しがある:

はあなたのマーカー、 1000ある
Bitmap markerIcon = BitmapFactory.decodeResource(getResources(), R.drawable.ic_heart); 
pulseMarker(markerIcon, marker, 1000); 

- 1つのパルスの1秒の時間。

+0

うんうん!本当にありがとうございます... – XcodeNOOB

+0

あなたはようこそ!そしてあなたは答えをupvoteすることができます;) –

+0

よ、私のために働いています...ありがとう! –

関連する問題