Bitmap newBm = ...
Canvas canvas = new Canvas(newBm);
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setColor(Color.WHITE);
paint.setTextSize((int) (44 * scale));
Rect bounds = new Rect();
paint.getTextBounds(gText, 0, gText.length(), bounds);
canvas.drawText(gText, x, y, paint);
我在Bitmap上画了这样的文字。我怎么能得到一个与文本高度相同但覆盖整个屏幕的灰色背景?
答案 0 :(得分:1)
通过编写良好的代码来查看和了解这些事情的最佳方法是查看android源代码本身。例如,这里是onDraw method for a TextView它包含了你可能不需要的其他东西,比如compoundPadding,但是你可以通过它来获得它的基本概念。
答案 1 :(得分:1)
您可以使用Rect
。在绘制文本之前,将Rect
绘制到屏幕上:
int screenWidth = getApplicationContext().getResources().getDisplayMetrics().widthPixels;
Rect greyBack = new Rect(0,top,screenWidth,bottom);
Paint paint = new Paint();
paint.setARGB(128, 100, 100, 100); //added alpha because Snapchat has translucent //grey background
canvas.drawRect(greyBack, paint);
top
和bottom
需要在文本的上方和下方设置坐标。您可以使用y
的值并为top
取一点,并为bottom
添加一点。您添加/减少的数量取决于您并更改greyBack
背景的高度。