android - 将图像和文本组合成可绘制对象

标签 android android-mapview drawable

我想创建一个可绘制对象,它由一个 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/

相关文章:

java - Mapview 顶部的另一个片段(SupportMapFragment)

android - 如何在 MapView 中查找覆盖项目的半径(以米为单位)

android - 可展开的 ListView onGroupExpanded 和 onGroupCollapsed

android - 当客户端是 native 移动应用程序时,处理向导流程的 Rails API 最佳实践?

接收器的 Android 别名

android - 是否有任何原生视频控件支持字幕?

android - 如何从 Delphi Android 应用程序开始视频通话?

android - 如何捕捉 map 调整大小的结束

Android 绘图 DPI

android - LayerList 或 LevelList XML 项中非位图可绘制对象的内联定义