我用XML创建了一个AnimationDrawable,它运行正常。但是在将drawable移动到MapView作为叠加标记(替换一个工作正常的静态drawable)时,动画固执地拒绝播放。我已将调用start()移动到一个按钮进行测试,即使在MapView显示几秒后按下,动画也无法启动。我在logcat中什么也看不到。我知道start()需要在所有窗口设置完成后调用,但这似乎是一个单独的问题。
AnimationDrawables是否与MapView兼容?
我需要做些什么特别的工作才能在MapView中完成一个工作吗?
您是否曾在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>
答案 0 :(得分:3)
这是未经过动画测试的,但可能会有所帮助。
我在向MapView添加小部件时遇到了问题,但是找到了addView方法。尝试通过此方法添加AnimationDrawable,它可能会更改MapView处理它的方式,从而正确地设置动画:
在这里查看一个小例子: http://www.gauntface.co.uk/pages/blog/2010/01/04/mapview-with-widgets-android/