我有一个很长的字符串,我相信它不适合图像。所以我最终计算了行,然后使用Bitmap
在Canvas
上逐行编写。问题是只写第一行。我会一直在写这个图像。每行的长度固定为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;
}
答案 0 :(得分:2)
for(int i=0; i<calculateLines(quote); i++) {
和
if(endAt > text.length()){
这两行需要你注意。 “text”和“quote”是相同的String吗?
答案 1 :(得分:1)
您将quote
传递给calculateLines
,如果它不是空的,您只会做任何事情,但是,您在那里使用mQuote
的{{1}}。我认为这种混乱是导致问题的原因。您需要确保传递的值是您要传递的值,并在计算中使用length
length
而不是quote
的{{1}}。< / p>