中央に透明な円が描かれた大きな画像があります。これをMapViewに重ねて、地図が円で表示されるようにします。画像は可能なデバイス画面よりも大きいため、すべてのサイズで基本的に同じように見えます。画像の丸みを帯びた角は複雑なので、これを行う必要があります。
ImageViewの一部が画面外になるように配置するにはどうすればよいですか?
透明な円を9パッチにします。次に例を示します。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);
}
あなたが達成したいことは、あなたが説明していることとは正確には違うのではないかと思います。ただし、その場合は、@DanielFeketeによって投稿されたソリューションが最善のアプローチです。その解決策に、プログラムでビューを追加する代わりに、をImageView
定義しているのと同じレイアウトファイルでを定義することもできることを追加します。MapView
もちろん、マップ上に描画するには、ImageView
の後に定義する必要があります。MapView
より柔軟なソリューションが必要な場合はImageView
、マップに合わせて移動できるか、マップをカバーしているが、マップに追加する他のオーバーレイアイテムはカバーしていない場合は、次の方法を使用できます。
マップのカバーしたい部分をマスク(カバー)するオーバーレイを作成します。このoevrlayのonDraw()で、マスク要件(形状、色、不透明度)を達成するものを描画します。
他のオーバーレイアイテムを表示したい場合は、マップをマスクするオーバーレイをmapView.getOverlays.add()に追加した後、これらのアイテムを含むオーバーレイを追加する必要があります。
楽しめ。