3

AndroidView类有一个名为 的方法onDraw,并且 onDraw 获得了一个画布。只有用户从不明确创建通过的画布,并且似乎没有其他方法可以访问它。

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

谢谢您的帮助。

4

2 回答 2

0

ViewRootImpl,视图层次结构中最顶层的类,请求整个可见窗口的 a ,并将其传递给您Canvas的顶层. 然后,每个将 this 的连接子集版本传递给每个 child的方法。ViewGroupActivityViewGroupCanvasViewdraw()

据我所知,不可能操纵Canvas外部onDraw()(和相关方法)。

您可以尝试使用您控制draw()的新实例来调用自己。Canvas这不会在屏幕上绘制任何内容,但您将能够阅读Canvas课堂上的其他内容,将其转换为位图等。请参阅此答案以获取示例:在 Android 上将视图转换为位图

于 2013-10-13T22:21:50.333 回答
0

了解画布和表面概念得出的结论

一个视图隐式地有一个与之关联的画布。当从特定视图中调用 invalidate() 时,或者对于特定视图(即视图 v,然后您调用 v.invalidate()),与该视图关联的画布被发送到视图的 onDraw 方法。

当一个视图包含其他视图时,从发出无效调用的视图开始遍历和重绘分层视图树。

于 2013-10-13T22:10:04.177 回答