我一直在绞尽脑汁地试图让这个看似简单的任务发挥作用。
我需要将一个动画 gif 放在地图视图上的叠加层中。
我有以下代码:
AnimationDrawable anim = (AnimationDrawable)getResources().getDrawable(R.drawable.explosion);
但是,我现在如何将其弹出到叠加层中并将其扔到地图视图上?
目前,要放置静态图像,我有这样的:
class DrawableIcon extends ItemizedOverlay {
private ArrayList mOverlays = new ArrayList();
public DrawableIcon(Drawable defaultMarker) {
super(boundCenterBottom(defaultMarker));
}
public void addOverlay(OverlayItem overlay) {
mOverlays.add(overlay);
populate();
}
@Override
protected OverlayItem createItem(int i) {
return mOverlays.get(i);
}
@Override
public int size() {
return mOverlays.size();
}
}
然后我这样使用:(gp 是我想要放置图像的地点的地理点)
DrawableIcon image = new DrawableIcon(this.getResources().getDrawable(ResourceID));
image.addOverlay(new OverlayItem(gp, "", ""));
mapOverlays.add(image);
那么我该如何修改此代码,以便当 ResourceID 是动画 gif 图像的 ID 时,gif 图像将在地图视图上播放其动画?
提前致谢!
要在地图上显示动画,可以使用 MapView 类的 addView 方法。但视图的布局参数必须使用 MapView.LayoutParams 进行初始化。
在这种情况下,当您滚动地图时,视图将自动移动!
它很简单:
- 只需创建一个视图(如 ImageView 或任何其他视图);
- 初始化视图布局,创建MapView.LayoutParams并将其传递给setLayoutParams方法;
-
将视图添加到 MapView。
public static void addAnimationToMap(MapView map, int animationResourceId, GeoPoint geoPoint) {
final ImageView view = new ImageView(map.getContext());
view.setImageResource(animationResourceId);
//Post to start animation because it doesn't start if start() method is called in activity OnCreate method.
view.post(new Runnable() {
@Override
public void run() {
AnimationDrawable animationDrawable = (AnimationDrawable) view.getDrawable();
animationDrawable.start();
}
});
map.addView(view);
MapView.LayoutParams layoutParams = new MapView.LayoutParams(
MapView.LayoutParams.WRAP_CONTENT,
MapView.LayoutParams.WRAP_CONTENT,
geoPoint,
MapView.LayoutParams.BOTTOM_CENTER);
view.setLayoutParams(layoutParams);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)