Java 谷歌地图v2中的动画信息窗口

Java 谷歌地图v2中的动画信息窗口,java,android,animation,google-maps-android-api-2,Java,Android,Animation,Google Maps Android Api 2,我最近询问了如何将动画应用于标记弹出窗口(infowindow),并解释了为什么不可能: 注意:绘制的信息窗口不是实时视图。返回视图时,该视图被渲染为图像(使用view.draw(Canvas))。这意味着对视图的任何后续更改都不会反映在地图上的“信息”窗口中。要在以后更新信息窗口(例如,在加载图像后),请调用showInfoWindow()。此外,信息窗口将不考虑正常视图(如触摸或手势事件)的任何典型交互。但是,您可以在整个信息窗口上收听一般的单击事件,如以下部分所述 通过进一步研究,我发现了

我最近询问了如何将动画应用于标记弹出窗口(infowindow),并解释了为什么不可能:

注意:绘制的信息窗口不是实时视图。返回视图时,该视图被渲染为图像(使用
view.draw(Canvas)
)。这意味着对视图的任何后续更改都不会反映在地图上的“信息”窗口中。要在以后更新信息窗口(例如,在加载图像后),请调用
showInfoWindow()
。此外,信息窗口将不考虑正常视图(如触摸或手势事件)的任何典型交互。但是,您可以在整个信息窗口上收听一般的单击事件,如以下部分所述

通过进一步研究,我发现了一个使用V1的项目,它可以手动创建标记位置上的视图。为了做到这一点,另一个人做了这样的事情:

public void showPopup(View view, GeoPoint point, boolean centerPopup) {

    removeAllViews();

    MapView.LayoutParams lp = new MapView.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT,
            point,
            Utils.dipsToPixels(0.0f, mContext),
            Utils.dipsToPixels(-12.0f, mContext),
            MapView.LayoutParams.BOTTOM_CENTER);

    if (centerPopup) {
        getController().animateTo(point);
        mIgnoreNextChangeEvent = true;
    }

    View balloon = mInflater.inflate(R.layout.balloon, null);
    balloon.setLayoutParams(lp);

    ((ViewGroup) balloon.findViewById(R.id.balloonBody)).addView(view);

    balloon.startAnimation(AnimationUtils.loadAnimation(mContext, R.anim.bounce_in));
    addView(balloon);
}
因此,他手动创建了一个引出序号视图并将其附着到MapView

我一直在尝试用V2来模拟同样的东西,但我没有做到,我甚至不知道这是否可行。例如,我使用“谷歌地图”而不是“地图视图”,我不确定这是否与V1和V2之间的某些差异有关

我将补充我目前所拥有的作为参考。我试图复制另一个项目的代码,并试图修改它,以便它在这个项目中工作,但我甚至无法编译它

public boolean onMarkerClick(Marker marker) {
    map.removeAllViews();

    MapView.LayoutParams lp = new MapView.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT,
            marker.getPosition(),
            Tools.dipsToPixels(0.0f, this),
            Tools.dipsToPixels(-12.0f, this),
            MapView.LayoutParams.BOTTOM_CENTER);

    if (centerPopup) {
        getController().animateTo(point);
        mIgnoreNextChangeEvent = true;
    }

    View balloon = mInflater.inflate(R.layout.balloon, null);
    balloon.setLayoutParams(lp);

    ((ViewGroup) balloon.findViewById(R.id.balloonBody)).addView(view);

    balloon.startAnimation(AnimationUtils.loadAnimation(mContext, R.anim.bounce_in));
    addView(balloon);

    return false;
}

您无法将滚动地图与任何可能位于其上方的视图同步,即使您完成了此类解决方案,它也会显得滞后


您是否尝试过这种解决方法:?

没有,但我最终可能会尝试一下。我仍然很惊讶没有更简单的解决办法。。。我相信很多人都希望能够为infowindows设置动画,让用户感觉更好。是的。谷歌地图Android API v2缺少很多漂亮的动画。也许迟早他们会添加一些不错的东西,比如设置信息窗口/标记出现和消失的动画,或者更改标记位置。我最终使用了一个处理程序,使用边距手动设置视图的动画。这样做有点丢脸,但是,嘿,它起作用了。谢谢