我已经在XML中创建了一个AnimationDrawable,并且它可以正常工作。但是,将可动画的drawable移动到MapView中作为覆盖物标记(替换了一个正常工作的静态drawable)后,动画顽固地拒绝播放。我将start()方法的调用移到了一个按钮上进行测试,即使在MapView显示几秒钟后按下该按钮,动画也不会启动。在logcat中我看不到任何东西。我知道需要在设置所有窗口之后才需要调用start()方法,但这似乎是一个单独的问题。
AnimationDrawables与MapView兼容吗?
是否有特殊的设置需要做才能在MapView中运行AnimationDrawables?
你是否已经成功让AnimationDrawables在MapView中运行过?
解决方案
使用Matt的解决方案(下面),我通过将ImageView放在MapView的图层内而不是使用覆盖物来添加AnimationDrawable。
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>