Google Maps v2中的动画信息窗口

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

注意:绘制的信息窗口不是实时视图。 视图在返回时呈现为图像(使用View.draw(Canvas) )。 这意味着对视图的任何后续更改都不会被地图上的信息窗口反映出来。 要稍后更新信息窗口(例如,在加载图像之后),请调用showInfoWindow() 。 此外,信息窗口将不会考虑正常视图(例如触摸或手势事件)的任何典型交互性。 但是,您可以在整个信息窗口中收听通用点击事件,如下节所述。

再研究一下,我发现了一个使用V1的项目,它在标记的位置上手动创建了View。 要做到这一点,另一个人做了这样的事情:

 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来模仿同样的东西,但我还没有能力,我甚至都不知道这是否可行。 例如,我使用“GoogleMap”而不是“MapView”,我不确定这是否与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; } 

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

您是否尝试过此解决方法: https : //stackoverflow.com/a/16147630/2183804 ?