public static BitmapDrawable bitmapText2Drawable(Context context,String text,int fontSize,int textColor,int backcolor) {
// 创建一个 Paint 对象
Paint paint = new Paint();
paint.setColor(textColor);
paint.setAntiAlias(true);
paint.setTextSize(DensityUtil.sp2px(context,fontSize)); // 设置字体大小为 14sp
// 计算文本的宽度和高度
float textWidth = paint.measureText(text);
Paint.FontMetrics fontMetrics = paint.getFontMetrics();
float textHeight = fontMetrics.bottom - fontMetrics.top;
int canvasWidth = (int) Math.ceil(textWidth);
int canvasHeight = (int) Math.ceil(textHeight);
Bitmap bitmap = Bitmap.createBitmap(canvasWidth, canvasHeight, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
canvas.drawColor(backcolor);
float x = 0;
float y = -fontMetrics.top;
canvas.drawText(text, x, y, paint);
BitmapDrawable bitmapDrawable = new BitmapDrawable(context.getResources(), bitmap);
return bitmapDrawable;
}
public static BitmapDrawable bitmapText2Drawable(Context context, String text, int fontSize, int textColor, int backcolor, int paddingTop, int paddingBottom, int paddingLeft, int paddingRight) {
Paint paint = new Paint();
paint.setTextSize(fontSize);
paint.setColor(textColor);
paint.setAntiAlias(true);
paint.setTextAlign(Paint.Align.LEFT);
int width = (int) paint.measureText(text);
int height = (int) (paint.descent() - paint.ascent());
Bitmap bitmap = Bitmap.createBitmap(width + paddingLeft + paddingRight, height + paddingTop + paddingBottom, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
canvas.drawColor(backcolor);
canvas.drawText(text, paddingLeft, height - paint.descent() + paddingTop, paint);
return new BitmapDrawable(context.getResources(), bitmap);
}
网友评论