0

中央に透明な円が描かれた大きな画像があります。これをMapViewに重ねて、地図が円で表示されるようにします。画像は可能なデバイス画面よりも大きいため、すべてのサイズで基本的に同じように見えます。画像の丸みを帯びた角は複雑なので、これを行う必要があります。

ImageViewの一部が画面外になるように配置するにはどうすればよいですか?

4

2 に答える 2

0

透明な円を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);
}
于 2012-10-28T10:51:35.450 に答える
0

あなたが達成したいことは、あなたが説明していることとは正確には違うのではないかと思います。ただし、その場合は、@DanielFeketeによって投稿されたソリューションが最善のアプローチです。その解決策に、プログラムでビューを追加する代わりに、をImageView定義しているのと同じレイアウトファイルでを定義することもできることを追加します。MapViewもちろん、マップ上に描画するには、ImageViewの後に定義する必要があります。MapView

より柔軟なソリューションが必要な場合はImageView、マップに合わせて移動できるか、マップをカバーしているが、マップに追加する他のオーバーレイアイテムはカバーしていない場合は、次の方法を使用できます。

マップのカバーしたい部分をマスク(カバー)するオーバーレイを作成します。このoevrlayのonDraw()で、マスク要件(形状、色、不透明度)を達成するものを描画します。

他のオーバーレイアイテムを表示したい場合は、マップをマスクするオーバーレイをmapView.getOverlays.add()に追加した後、これらのアイテムを含むオーバーレイを追加する必要があります。

楽しめ。

于 2012-10-28T15:17:34.617 に答える