我正在使用这个很棒的库来处理我的 Android 应用程序中的地图。我正在制作一个名为 MapView 的自定义视图,它扩展了 SubsamplingScaleImageView。我正在尝试使用库的基本 PinView 扩展在地图上设置 Pin,但我不想要静态 Pin 图像而是动态 gif。我已经阅读了使用“电影”、使用 GifDecoder 和使用 WebView 的 3 种场景,但它们都不适合我。我真的不知道如何在地图中为我的 Pin 设置动画。请帮帮我!
public class MapView extends SubsamplingScaleImageView{
private PointF sPin;
private Bitmap pin;
public MapView(Context context) {
this(context, null);
}
public MapView(Context context, AttributeSet attr) {
super(context, attr);
initialise();
}
private void initialise() {
float density = getResources().getDisplayMetrics().densityDpi;
pin = BitmapFactory.decodeResource(this.getResources(), R.drawable.pushpin_blue.gif); //<<<<<<<Here goes the GIF
float w = (density/420f) * pin.getWidth();
float h = (density/420f) * pin.getHeight();
pin = Bitmap.createScaledBitmap(pin, (int)w, (int)h, true);
}
public PointF getPin() {
return sPin;
}
public void setPin(PointF sPin) {
this.sPin = sPin;
initialise();
invalidate();
}
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (!isReady()) {
return;
}
if (sPin != null && pin != null) {
Paint paint = new Paint();
paint.setAntiAlias(true);
PointF vPin = sourceToViewCoord(sPin);
float vX = vPin.x - (pin.getWidth()/2);
float vY = vPin.y - pin.getHeight();
canvas.drawBitmap(pin, vX, vY, paint);
}
}
}