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

Abh*_*bhi 23 android drawable android-mapview

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

这个drawable应该传递super(drawable)BalloonItemizedOverlay扩展的类ItemizedOverlay<Item>.

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

我正在使用Hello Mapview 教程

Mar*_*moy 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);
    }
Run Code Online (Sandbox Code Playgroud)

要保持密度,您需要此构造函数

BitmapDrawable (Resources res, Bitmap bitmap)
Run Code Online (Sandbox Code Playgroud)

所以,保持你的背景,最后的回归应该是这样的

return new BitmapDrawable(context.getResources(), bm);
Run Code Online (Sandbox Code Playgroud)

这可以防止不需要的重新调整大小的可绘制.

  • 只是想评论这不适用于xml定义的drawable.因为那种drawable是GradientDrawable. (2认同)