View类中的draw()和onDraw()方法有什么区别?

时间:2016-01-28 19:16:41

标签: android

draw()类中的onDraw()View方法之间有什么区别?

2 个答案:

答案 0 :(得分:2)

SurfaceView.draw()基本上调用View.draw();如果你想实现你的绘图,你应该在View.onDraw()中实现它,你可以在源代码注释中实现它。

ViewGroup.drawChild()调用此方法让每个子视图绘制自己。此draw()方法是一个实现细节,并不打算覆盖或从ViewGroup.drawChild()以外的任何其他地方调用。 至于他们之间的区别: 绘制():

/*
* Draw traversal performs several drawing steps which must be executed
* in the appropriate order:
*
*      1. Draw the background
*      2. If necessary, save the canvas' layers to prepare for fading
*      3. Draw view's content
*      4. Draw children
*      5. If necessary, draw the fading edges and restore layers
*      6. Draw decorations (scrollbars for instance)
*/

onDraw()为空。它可供您实施。

答案 1 :(得分:0)

方法之间的主要区别是:

  1. onDraw(Canvas c)方法是一种覆盖方法,在呈现视图时会自动调用。您可以在此处添加其他功能,例如制作圆圈或绘制线条。即无论你想要什么。
  2. draw(Canvas c)用于手动将此视图及其所有子视图呈现给给定的画布&c;#39;。在确定此功能之前,视图必须已经完成了完整的布局。实现视图时,实现onDraw(android.graphics.Canvas)而不是重写此方法。
  3. 这仅仅意味着, draw(Canvas c)是在呈现给定视图时自动调用的函数。用户需要提供将在其上呈现视图的Canvas' c。在调用此函数之前,用户还必须在画布上完成所有绘图。