所以我最初从下面的代码开始:
private Bitmap writeTextOnDrawable(int drawableId, String text) {
Bitmap bm = BitmapFactory.decodeResource(getResources(), drawableId);
Bitmap alteredBitmap = Bitmap.createBitmap(bm.getWidth(), bm.getHeight(), bm.getConfig());
Canvas canvas = new Canvas(alteredBitmap);
Paint paint = new Paint();
canvas.drawBitmap(bm, 0, 0, paint);
paint.setColor(Color.WHITE);
paint.setTextSize(150f);
canvas.drawText(text, 100, 1000, paint);
return alteredBitmap;
}
它按预期工作,背景图像在那里,文本也在那里,除了文本对屏幕来说太长,我需要以某种方式包装它。
然后我查看TextPaint
并StaticLayout
使用此代码处理多行问题。
private Bitmap writeTextOnDrawable(int drawableId, String text) {
Bitmap bm = BitmapFactory.decodeResource(getResources(), drawableId);
Bitmap alteredBitmap = Bitmap.createBitmap(bm.getWidth(), bm.getHeight(), bm.getConfig());
Canvas canvas = new Canvas(alteredBitmap);
TextPaint tp = new TextPaint();
canvas.save();
tp.setColor(Color.WHITE);
tp.setTextSize(150f);
tp.setTextAlign(Align.CENTER);
tp.setAntiAlias(true);
StaticLayout sl = new StaticLayout("" + text, tp,
canvas.getWidth(), Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false);
canvas.translate(100, 1000);
sl.draw(canvas);
return alteredBitmap;
}
这根本不起作用。我的背景图像现在消失了,它什么都没有显示。之前的文字没有居中。唯一的好处是文本现在是多行的。
有谁知道为什么文本改变了它的初始起点以及为什么画布的背景图像消失了?任何帮助将不胜感激。