我有一个很长的字符串,我肯定不会放在图像上。所以我结束了计算线条,然后使用Canvas
在Bitmap
上逐行写入。问题是只有第一行被写入。我会一直在写这个图像。每行的长度固定为40个字符。请在下面检查代码:在循环中的画布上绘制文本
private Bitmap prepareImageWithText(String text){
Bitmap bitmap = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.text_image); // Load your bitmap here
Bitmap aBitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true); // copy the bitmap because the one from the Resources is immutable.
Canvas canvas = new Canvas(aBitmap);
Paint paint = new Paint();
paint.setColor(Color.BLACK);
paint.setTextSize(75);
for(int i=0; i<calculateLines(text); i++) {
int beginFrom = i*40;
int endAt = beginFrom + 40;
if(endAt > text.length()){
endAt = text.length()-1;
}
String writableArea = text.substring(beginFrom, endAt);
canvas.drawText(writableArea, 100, 300+(i*100), paint);
canvas.save();
}
return aBitmap;
}
private int calculateLines(String text){
if(!TextUtils.isEmpty(text)){
int lines = text.length()/40;
return lines;
}
return 1;
}
只需使用'android.text.Layout' – pskink
@pskink你能解释一下吗? – Ichthyocentaurs
用它来绘制'Canvas'上的Looong文本,不需要''计算线条,然后逐行写入'',而不是只创建一个'Layout'实例,并在'Canvas'上绘制它' – pskink