一般的なアプローチは、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秒の時間。
うんうん!本当にありがとうございます... – XcodeNOOB
あなたはようこそ!そしてあなたは答えをupvoteすることができます;) –
よ、私のために働いています...ありがとう! –