我的中心有一个带有透明圆圈的大图像。我想在MapView上重叠这一点,以便您可以看到圆圈中的地图。图像比任何可能的设备屏幕都大,因此它在所有尺寸上看起来基本相同。图像中的圆角很复杂,这就是我需要这样做的原因。
如何定位ImageView以使其部分位于屏幕外?
答案 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()之后添加叠加这些项目。
享受它。