当我使用Canvas在自定义视图中绘制时,是否有一种简单的方法可以在RTL语言环境下进行绘制而不需要手动反转坐标计算?
这是一个非常假设的例子,在onDraw()中包含以下内容的自定义视图:
int w = getWidth();
int h = getHeight();
canvas.save();
mPaint.setColor(Color.RED);
canvas.drawRect(0, 0, w / 2, h, mPaint);
mPaint.setColor(Color.BLUE);
canvas.drawRect(w / 2, 0, w, h, mPaint);
int size = h / 4;
mPaint.setColor(Color.GREEN);
int paddingEnd = ViewCompat.getPaddingEnd(this);
canvas.translate(-paddingEnd, getPaddingTop());
canvas.drawRect(w - size, 0, w, size, mPaint);
canvas.restore();
它在LTR和RTL布局中的外观完全相同: 我知道您可以使用矩阵或
canvas.scale()
翻转画布,但对于更复杂的情况(如在画布上绘制文本或其他Drawable),这不是可行的选项。如何在画布上实现RTL绘图的最佳方法?我是否必须计算X轴坐标的反转值?