添加带有灰色背景的文字到像Snapchat那样的图片?安卓/ Java的

时间:2014-07-14 23:12:12

标签: java android bitmap android-canvas paint

          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上画了这样的文字。我怎么能得到一个与文本高度相同但覆盖整个屏幕的灰色背景?

2 个答案:

答案 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);

topbottom需要在文本的上方和下方设置坐标。您可以使用y的值并为top取一点,并为bottom添加一点。您添加/减少的数量取决于您并更改greyBack背景的高度。