EditText + Spannable 實現富文本編輯器(字體、顏色、粗體等),需將編輯內容連同樣式繪製為圖片發送。
`DynamicLayout` 可直接渲染 `CharSequence`(含 Span)到 `Canvas`,保留所有樣式。
public Bitmap spannableToBitmap(CharSequence text, TextPaint paint, int width, int height) {
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
canvas.drawColor(Color.WHITE); // 背景色
DynamicLayout layout = new DynamicLayout(
text, paint, width,
Layout.Alignment.ALIGN_NORMAL, 1.0f, 1.0f, false
);
layout.draw(canvas);
return bitmap;
}
// 調用示例
TextPaint paint = new TextPaint();
paint.setTextSize(30);
paint.setTypeface(Typeface.DEFAULT);
Bitmap bmp = spannableToBitmap(editText.getText(), paint, 800, 600);