Android View Class的onDraw方法传递的画布是什么?

时间:2013-10-13 17:55:23

标签: android android-canvas android-view ondraw

Android View类有一个名为onDraw的方法,onDraw会传递一个画布。只有用户从不显式创建传递的画布,并且似乎没有其他方法可以访问它。

传递给onDraw的画布是什么,它在哪里创建并有办法访问它?

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

Understanding Canvas and Surface concepts

得出结论

视图隐式具有与之关联的画布。当从特定视图或特定视图(即View v,然后调用v.invalidate())调用invalidate()时,与该视图关联的画布将发送到View的onDraw方法。

当视图包含其他视图时,将从进行无效调用的视图开始遍历并重绘分层视图树。

答案 1 :(得分:0)

ViewRootImpl是视图层次结构中最顶层的类,为整个可见窗口请求Canvas,并将其传递给ViewGroup的顶级Activity。然后,每个ViewGroup将此Canvas连续子集版本传递给每个子View的{​​{1}}方法。

据我所知,不可能操纵draw()之外的Canvas(以及相关方法)。

您可以尝试使用您控制的新onDraw()实例自行调用draw()。这不会在屏幕上绘制任何内容,但您可以阅读课程中其他位置的Canvas,将其转换为位图等。请参阅此答案以获取示例:Convert view to bitmap on Android < / p>