我有一个自定义的 View
覆盖了 onDraw
:
protected void onDraw(Canvas canvas)
{
canvas.drawPath(m_path, m_paint);
}
我想让平移/缩放/旋转 View 成为可能。而且我不想每次用户移动他的手指时都重新绘制它。我的想法是将转换矩阵应用于 View 以响应用户手势。
我知道有一种方法 ImageView.setImageMatrix
似乎可以满足我的需要,但我没有 ImageView
,而是自定义的 View
.
在 iOS 中,我使用了 CALayer
和 myLayer.affineTransform = CGAffineTransformMake...
。
您建议如何在 Android 中处理它?</p>
最佳答案
如果您正在绘制路径
,您可以将矩阵
(Android 称为仿射变换)应用于您的路径:
在用户交互时,您将更新矩阵,然后您的 View 将调用:
m_path.transform(m_matrix, m_path_draw);
参见 Path#transform | Android Developers
在 onDraw()
中,你会调用:
canvas.drawPath(m_path_draw, m_paint);
或者,Canvas
有一个setMatrix()
方法:
canvas.save();
canvas.setMatrix(m_matrix);
canvas.drawPath(m_path, m_paint);
canvas.restore();
无论您使用哪种方法,我都建议让您的 Matrix
成为一个成员变量,这样您在自定义 View 构造期间只需构造一次。
关于android - 如何对 View 应用转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38073312/