简书链接:androidtext转drawable做前景色
文章字数:48,阅读全文大约需要1分钟
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| 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; }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| 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); }
|