0

我有一个中间有透明圆圈的大图像。我想将它重叠在 MapView 上,以便您可以看到地图的圆圈。该图像比任何可能的设备屏幕都大,因此它在所有尺寸上看起来基本相同。图像中的圆角很复杂,这就是我需要这样做的原因。

如何定位 ImageView 使其部分位于屏幕外?

4

2 回答 2

0

我怀疑您想要达到的目标与您描述的不完全一样。但是,如果是这种情况,@Daniel Fekete 发布的解决方案是最好的方法。对于该解决方案,我只是补充说,您还可以在定义ImageView的同一布局文件中定义MapView,而不是以编程方式添加视图。当然ImageView应该在 之后定义,MapView以便将其绘制在地图上。

如果您需要更灵活的解决方案,ImageView可以与地图对齐移动,或者让它覆盖地图,但不覆盖您添加到地图的其他叠加项目,那么您可以使用以下方法:

创建一个覆盖(覆盖)您想要覆盖的地图部分的覆盖。在这个 oevrlay 的 onDraw() 中,只需绘制满足您的蒙版要求(形状、颜色和不透明度)的东西。

如果您想让其他叠加项目可见,则需要在将遮罩映射的叠加添加到 mapView.getOverlays.add() 之后添加这些项目的叠加。

好好享受。

于 2012-10-28T15:17:34.617 回答
0

使透明圆圈成为Ninepatch,例如:http://i.imgur.com/8wmrQ.png

将其保存到res/drawable-hdpi/mask.9.png

比你可以用它

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    RelativeLayout rl = new RelativeLayout(this);
    MapView mapView = new MapView(this, "apikey");
    mapView.setClickable(true);
    rl.addView(mapView);

    ImageView imageView = new ImageView(this);
    imageView.setImageResource(R.drawable.mask);
    imageView.setScaleType(ScaleType.FIT_XY);
    rl.addView(imageView, RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);

    setContentView(rl);
}
于 2012-10-28T10:51:35.450 回答