我想创建一个可绘制对象,它由一个 map 图钉(气泡)和一些文本组成。气泡应该在背景中,文本在前景中。
这个drawable应该传入super(drawable)
类(class) BalloonItemizedOverlay
扩展 ItemizedOverlay<Item>
.
换句话说,我想在 map 中出现的气泡中显示文本。
我正在使用 Hello Mapview tutorial
最佳答案
此方法从您的资源中获取一个可绘制对象,在其上绘制一些文本并返回新的可绘制对象。您需要做的就是给它您的气泡的资源 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);
这可以防止不希望的调整大小的可绘制对象。
关于android - 将图像和文本组合成可绘制对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6691818/