Я создал AnimationDrawable в XML, и он отлично работает. Но при перемещении объекта рисования в MapView в качестве маркера наложения (заменяя статический объект рисования, который работает нормально), анимация упрямо отказывается воспроизводиться. Я переместил вызов start () на кнопку для тестирования, и даже при нажатии на несколько секунд после отображения MapView анимация не запускается. Я ничего не вижу в logcat. Я знаю, что start () нужно вызывать после того, как все окна настроены, но, похоже, это отдельная проблема.
Совместимы ли AnimationDrawable с MapView?
Есть ли что-то особенное, что мне нужно сделать, чтобы одна работа в MapView?
У вас когда-нибудь была одна работа в MapView?
Решение
Используя решение Мэтта (ниже), я добавил AnimationDrawable, поместив ImageView внутри слоев MapView вместо использования наложения.
public void showAnimatedMarker(GeoPoint point) {
LinearLayout v = (LinearLayout) View.inflate(context, R.layout.markerlayout, null);
ImageView marker = (ImageView) v.findViewById(R.id.marker);
AnimationDrawable markerImage = (AnimationDrawable)marker.getDrawable();
this.addView(v, 0, new MapView.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, point, MapView.LayoutParams.BOTTOM_CENTER));
markerImage.start();
}
А затем markerlayout.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/marker"
android:src="@drawable/my_animation_drawable"
/>
</LinearLayout>