web-dev-qa-db-ja.com

画像とテキストをドローアブルに組み合わせる

マップピン(バブル)とテキストで構成されるドローアブルを作成したいと思います。バブルは背景にあり、テキストは前景にあるはずです。

このドロウアブルは、_ItemizedOverlay<Item>_を拡張するクラスBalloonItemizedOverlaysuper(drawable)で渡す必要があります。

つまり、地図に表示されるバブルにテキストを表示したいのです。

Hello Mapviewを使用しています チュートリアル

23
Abhi

このメソッドは、リソースからドローアブルを取得し、その上にテキストを描画して、新しいドローアブルを返します。必要なのは、バブルのリソースIDと、必要なテキストを上に付けることだけです。次に、返されたドローアブルをどこにでも渡すことができます。

public BitmapDrawable writeOnDrawable(int drawableId, String text){

        Bitmap bm = BitmapFactory.decodeResource(getResources(), drawableId).copy(Bitmap.Config.ARGB_8888, true);
        Paint paint = new Paint(); 
        Paint.setStyle(Style.FILL);  
        Paint.setColor(Color.BLACK); 
        Paint.setTextSize(20); 

        Canvas canvas = new Canvas(bm);
        canvas.drawText(text, 0, bm.getHeight()/2, Paint);

        return new BitmapDrawable(bm);
    }

密度を維持するには、このコンストラクタが必要です

BitmapDrawable (Resources res, Bitmap bitmap)

したがって、コンテキストを維持すると、最後のリターンは次のようになります

return new BitmapDrawable(context.getResources(), bm);

これにより、不要なサイズ変更ドローアブルが防止されます。

62
Marmoy