将图像和文本组合成可绘制的

时间:2011-07-14 10:33:31

标签: android android-mapview drawable

我想创建一个drawable,它由一个map pin(bubble)和一些文本组成。气泡应该在背景中,文本在前景中。

此drawable应传递到super(drawable)的{​​{1}} BalloonItemizedOverlay,其范围为ItemizedOverlay<Item>

换句话说,我想在地图中显示的气泡中显示文字。

我正在使用Hello Mapview tutorial

1 个答案:

答案 0 :(得分:62)

此方法从您的资源中获取一个drawable,在其上绘制一些文本并返回新的drawable。您需要做的就是为它提供泡泡的资源ID,以及您想要的文本。然后,您可以将返回的drawable传递到任何您想要的位置。

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);

这可以防止意外调整大小的drawable。