我的自定义View
已被覆盖onDraw
:
protected void onDraw(Canvas canvas)
{
canvas.drawPath(m_path, m_paint);
}
我希望能够平移/缩放/旋转视图。而且每次用户移动手指时我都不想重绘它。我的想法是在视图中应用转换矩阵以响应用户手势。
我知道有一种方法ImageView.setImageMatrix
似乎可以满足我的需求,但我没有ImageView
,而是自定义View
。
在iOS中,我使用了CALayer
和myLayer.affineTransform = CGAffineTransformMake...
。
您如何建议在Android中处理它?</ p>
答案 0 :(得分:1)
如果您正在绘制Path
,则可以将Matrix
(如Android调用仿射变换)应用于您的路径:
在用户互动时,您会更新矩阵,然后您的视图会调用:
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
作为成员变量,这样您只需在自定义视图构建过程中构建一次。