反转画布的drawText()

时间:2018-10-08 10:25:55

标签: android drawing android-canvas

当我在canvas对象上绘制文本时,一直在寻找一种方法来反转文本。我在SO中找不到任何相关问题。 (也许我使用了错误的关键字。)这就是我想通过drawText()实现的目标:

enter image description here

此功能可以在android.graphics软件包中使用吗?

2 个答案:

答案 0 :(得分:1)

不,android.graphics中没有类似的功能。

但是您的用例类似于夜间模式功能。例如,有一些方法可以实现:

  1. 为您的TextView使用不同的样式
  2. 创建自定义TextView来反转背景和文本颜色。

答案 1 :(得分:0)

此代码解决了我的问题。

String textToWrite = "Hello World";
int padding = 5;
int paddingTop = padding;
int paddingBottom = padding;
int paddingLeft = padding;
int paddingRight = padding;

Rect bounds = new Rect();
mPaint.getTextBounds(textToWrite, 0, textToWrite.length(), bounds);

mPaint.setColor(Color.WHITE);
Bitmap bitmap = Bitmap.createBitmap(
        bounds.width() + paddingLeft + paddingRight,
        bounds.height() + paddingTop + paddingBottom,
        Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
canvas.drawColor(Color.BLACK);

int y = (bitmap.getHeight() + bounds.height() - padding)/2 ;
canvas.drawText(textToWrite, paddingLeft, y, mPaint);

如果您想将此反向文本添加到画布的其余部分,只需将bitmap绘制到全局画布上,如下所示:

mOriginalCanvas.drawBitmap(bitmap, mCurrentX, mCurrentY, mOriginalPaint);