이미지에 맞지 않는 긴 문자열이 있습니다. 그래서 나는 Canvas
을 사용하여 Bitmap
에 라인을 계산 한 다음 줄 단위로 글을 썼습니다. 문제는 첫 번째 줄만 작성된다는 것입니다. 나는 항상이 하나의 이미지에 글을 쓸 것이다. 각 행의 길이는 40 자로 고정됩니다. 당신은 mQuote
의 length
가 사용캔버스에 루프로 텍스트 그리기
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 텍스트를 그릴 때 사용합니다.''행을 계산할 필요가없고,''Line''을 한 줄씩 쓰는 대신''Layout' 인스턴스를 만들고'Canvas'에'draw'합니다. – pskink