Android 在画布上绘制文本不使用可变位图
我想在我的Android应用程序中使用谷歌地图上的自定义标记。 为此,我有一个方法,可以创建位图。每个位图都是一个包含特殊文本的标记。 我已经这样做了,它在我的2.3.3安卓上运行正常。但是在其他设备上它崩溃了,因为我不使用可变位图。 我将代码更改为可变位图,但现在文本不可见,只有没有文本的标记位图 我的方法:Android 在画布上绘制文本不使用可变位图,android,google-maps,canvas,bitmap,mutable,Android,Google Maps,Canvas,Bitmap,Mutable,我想在我的Android应用程序中使用谷歌地图上的自定义标记。 为此,我有一个方法,可以创建位图。每个位图都是一个包含特殊文本的标记。 我已经这样做了,它在我的2.3.3安卓上运行正常。但是在其他设备上它崩溃了,因为我不使用可变位图。 我将代码更改为可变位图,但现在文本不可见,只有没有文本的标记位图 我的方法: Bitmap bm = BitmapFactory.decodeResource(context.getResources(), R.drawable.marker); Typefac
Bitmap bm = BitmapFactory.decodeResource(context.getResources(), R.drawable.marker);
Typeface tf = Typeface.create("Helvetica", Typeface.BOLD);
Paint paint = new Paint();
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.WHITE);
paint.setTypeface(tf);
paint.setTextAlign(Paint.Align.CENTER);
paint.setTextSize(convertToPixels(context, 8));
Rect textRect = new Rect();
paint.getTextBounds(markerText, 0, markerText.length(), textRect);
// THIS LINE IS NEW FOR MUTABLE
Bitmap mutableBitmap = bm.copy(Bitmap.Config.ARGB_8888, true);
Canvas canvas = new Canvas(mutableBitmap);
if(textRect.width() >= (canvas.getWidth() - 4)){
paint.setTextSize(convertToPixels(context, 7));
}
int xPos = (canvas.getWidth() / 2) - 2;
int yPos = (int) ((canvas.getHeight() / 2) - ((paint.descent() + paint.ascent()) / 2)) ;
canvas.drawText(markerText, xPos, yPos, paint);
return bm;
我做错了什么?我只是用mutable添加行
致以最诚挚的问候您的方法返回使用
BitmapFactory.decodeResource()
获得的不可变位图
您必须返回在其上绘制的可变位图:
return mutableBitmap;
您是否尝试过返回可变位图而不是bm?是的,这就是问题所在。答案标记为已解决。thx伙计们。