Android View
类有一个名为onDraw
的方法,onDraw会传递一个画布。只有用户从不显式创建传递的画布,并且似乎没有其他方法可以访问它。
传递给onDraw
的画布是什么,它在哪里创建并有办法访问它?
感谢您的帮助。
答案 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>