我試圖在標記添加到地圖時設置動畫的大小,基本上我要標記增長。我看不到任何獲得標記實際視圖的方式,所以我不認爲我可以使用標準的Android動畫技術(例如ObjectAnimator
)。Android Google Maps v2:設置動畫標記大小
我能看到做到這一點的唯一方法是實現我自己的動畫並使用setIcon
方法更改標記圖標。
有沒有其他的理想的更好的方式來做到這一點?
我在Xamarin中工作,但如果需要可以移植Java代碼。
我試圖在標記添加到地圖時設置動畫的大小,基本上我要標記增長。我看不到任何獲得標記實際視圖的方式,所以我不認爲我可以使用標準的Android動畫技術(例如ObjectAnimator
)。Android Google Maps v2:設置動畫標記大小
我能看到做到這一點的唯一方法是實現我自己的動畫並使用setIcon
方法更改標記圖標。
有沒有其他的理想的更好的方式來做到這一點?
我在Xamarin中工作,但如果需要可以移植Java代碼。
你可以嘗試這樣的事情
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();
是的,你是對的沒有直接的方法來做到這一點。相反,你可以使用處理程序,它會在每隔500毫秒後調用,並且可以設置標記的setIcon。
使用此鏈接以供參考; How to animate marker in android map api V2?
技術上你可以使用'ObjectAnimator'與例如'「圖標」'酒店提供你在你的'target'對象有'setIcon'方法,並創建它作爲如下:'ObjectAnimator.ofInt(this,「icon」,10,100)' – pskink
@pskink你是對的,這是我最終選擇的方法。發表您的評論作爲答案,我會接受。 –