我可以在MapView的叠加层中使用AnimationDrawable吗?

时间:2011-09-13 19:38:40

标签: android android-mapview android-maps

我用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>

1 个答案:

答案 0 :(得分:3)

这是未经过动画测试的,但可能会有所帮助。

我在向MapView添加小部件时遇到了问题,但是找到了addView方法。尝试通过此方法添加AnimationDrawable,它可能会更改MapView处理它的方式,从而正确地设置动画:

在这里查看一个小例子: http://www.gauntface.co.uk/pages/blog/2010/01/04/mapview-with-widgets-android/