【发布时间】:2020-01-23 18:02:50
【问题描述】:
我使用此代码垂直绘制文本。
RectF rectF2 = new RectF();
matrix.mapRect(rectF2, bounds);
canvas.save();
canvas.rotate(90, rectF2.right, rectF2.top);
canvas.drawText(text, rectF2.left, rectF2.bottom, mTextPaint);
canvas.restore();
这很好用,但我也想更改坐标。因为后来我点击对象并进行拖放。
现在的问题是,如下图所示,坐标被绘制为矩形。所以当我点击那个矩形区域时,只能在画布上移动文本。
所以我想在旋转画布时也旋转原始坐标。我试过matrix.setRotate 但我无法实现我想要的。
【问题讨论】:
-
代码here 可以满足您的需求。它将文本旋转 90 度并移动边界以匹配文本。它不处理选取框滚动以及TextView 的其他一些更高级的方面。 This project 是另一种使用路径的替代方法。
-
我想用矩阵做运算。所以我会保存矩阵值以备后用。
-
我认为可能是这样。虽然视图负责测量自身,但 ViewGroup 根据 ViewGroup 的规则定位视图。 (您没有提及您正在使用哪个 ViewGroup。)您可能可以通过在自定义视图中覆盖 layout() 并在此处应用矩阵值来更改边界,确定新边界并调用通过超级。另一种可能性是创建一个矩阵感知的自定义 ViewGroup。
-
你想画一个旋转的矩形吗?或者您想知道用户何时点击文本?
-
@Android_Developer 我想两者都做。