Могу ли я использовать AnimationDrawable в наложении на MapView? - PullRequest
6 голосов
/ 13 сентября 2011

Я создал 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>

1 Ответ

3 голосов
/ 15 сентября 2011

Это не проверено с анимациями, но может быть полезно.

У меня были проблемы с добавлением виджетов в MapView, но я нашел метод addView.Попробуйте добавить AnimationDrawable с помощью этого метода, он может изменить способ его обработки в MapView и, следовательно, правильно анимировать:

Посмотрите здесь крошечный пример: http://www.gauntface.co.uk/pages/blog/2010/01/04/mapview-with-widgets-android/

...