長い文字列があり、画像に収まらないと確信しています。だから私は、Canvas
を使用して、Bitmap
に行を計算し、行ごとに書くことになりました。問題は最初の行だけが書かれていることです。私はいつもこの1つのイメージを書いています。各行の長さは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テキストを描画するために使用します。' 'Canvas'に' 'Layout'インスタンスを作成して描画します。 – pskink