“隐藏”Android中的OverlayItem,可能吗?
我正在研究MapView应用程序,并希望在程序中放置一个漂亮的小复活节彩蛋。我想要做的是有一个基本上不可见的叠加层,但是当点击会触发一个事件来显示一个视图。“隐藏”Android中的OverlayItem,可能吗?
现在在iPhone上,我通过在注解中使用setHidden:true来实现这一点,我不想看到它..注释仍然存在,仍然是可点击的,但是你看不到它。
我想在Android的overlayItem上找到一些等价的方法,但什么都没发现。我唯一的选择就是通过这种方式来查找/创建透明图像并将其添加为mapView的叠加层?如果必须的话,我可以做到这一点,但还有其他选择吗?如果没有,任何人都可以指向一个相对较小的透明图像?
我发现最简单的解决方案是只使用一个不可见的drawable并将其添加为overlayitem,所以这就是我所做的,它的工作原理预期。
您可以在地图视图的顶部制作可点击的图像视图(相应地设置宽度/高度,颜色为透明),点击时会触发复活节彩蛋。然而,它可能很难正确定位..
除此之外,我可以想象使用自定义视图,您可以重写onTouch函数来触发复活节彩蛋,如果x,y坐标位于一个框内。否则会被地图视图处理。但这听起来像可能是一个复活节彩蛋很多工作..
我知道你找到了一种方法来隐藏你的覆盖,但有更优雅的方式来做到这一点。 创建自定义类的叠加:
public class MapOverlay extends Overlay{
private Boolean visible;
public MapOverlay(){
this.visible = true;
}
public void draw(Canvas canvas, MapView mapv, boolean shadow){
super.draw(canvas, mapv, shadow);
if (visible) {
// draw what you want
}
}
public Boolean isVisible() {
return visible;
}
public void isVisible(Boolean visible) {
this.visible = visible;
}
public void toggleVisible() {
this.visible = !visible;
}
}
然后在你的活动,增加覆盖和往常一样:
mapView.getOverlays().addOverlay(new MapOverlay());
以后,如果你想显示/隐藏叠加,只需拨打:
mapView.getOverlays().get(0).toggleVisible();
或:
mapView.getOverlays().get(0).isVisible(false);
希望它有帮助。
你的意思是“MapOverlay扩展OverlayItem”吗? – 2012-10-12 20:48:31
我刚刚添加了一个基本上是透明图像的覆盖图作为itemizedoverlayitem,并且它工作正常。感谢您的其他想法。 – user756212 2011-05-31 14:24:23