【发布时间】:2011-09-15 22:00:58
【问题描述】:
我在 XML 中创建了一个 AnimationDrawable,它工作正常。但是在将可绘制对象作为覆盖标记移动到 MapView 时(替换可以正常工作的静态可绘制对象),动画顽固地拒绝播放。我已经将对 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>
【问题讨论】:
-
您发现的内容非常出色且可以接受,但它是主要解决方案的替代方案,应该有某种方式使用覆盖类制作动画,因为它旨在将标记放在地图上。你是什么做的是直接在地图上调用渲染线程并绘制任何你想要的东西。很好。但我想要的是你使用标记的解决方案。你找到任何相关的东西吗?我正在寻找相同的方法,但如果我使用您建议的通货膨胀方法更改覆盖类,对我来说会有更多的变化。
标签: android android-mapview android-maps