super.onDraw()在这个例子中究竟做了什么?
如果我将其遗漏,它会改变调用onDraw方法时会发生什么?
class Preview extends SurfaceView implements SurfaceHolder.Callback {
// onDraw is a callback method of the SurfaceView class
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// more code to implement some action when this method is called
} // end onDraw method
} // end Preview class
编辑:我刚刚找到一个很好的问题和答案,以帮助澄清超级电话的目的,When NOT to call super() method when overriding?
答案 0 :(得分:1)
如果您查看SurfaceView
的源代码,就会看到它扩展View
并且它不会覆盖onDraw()
方法,因此它是View
的正在调用的onDraw()
方法。
现在查看View
的{{1}}方法:
onDraw()
它没有做任何事情。因此,在课堂上调用/**
* Implement this to do your drawing.
*
* @param canvas the canvas on which the background will be drawn
*/
protected void onDraw(Canvas canvas) {
}
将无能为力。
答案 1 :(得分:0)
它调用类onDraw()
中的方法SurfaceView
。
一般来说,不在特定情况:
因为它是超类实现中的基类,所以基本的东西,如borders
,colors
,或者你传递给画布对象的任何设置。
如果你不想让他们自己写在这里。
答案 2 :(得分:0)
它什么都不做)SurfaceView的onDraw是View的onDraw,它是空的。但不能保证它总是空的。如果你没有理由不打电话,你最好打电话给它。