重叠大于MapView顶部的屏幕图像

时间:2012-10-27 23:28:13

标签: android imageview

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

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

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

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

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

创建一个覆盖(掩盖)要覆盖的地图部分的叠加层。在这个oevrlay的onDraw()中,只绘制一些能够满足你的面具要求(形状,颜色和不透明度)的东西。

如果您希望其他叠加项可见,则需要在将遮罩贴图添加到mapView.getOverlays.add()之后添加叠加这些项目。

享受它。