超级调用onDraw在SurfaceView回调方法中做了什么,例如:super.onDraw(canvas)

时间:2013-10-03 08:24:07

标签: java android user-interface camera surfaceview

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?

3 个答案:

答案 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

一般来说,不在特定情况

因为它是超类实现中的基类,所以基本的东西,如borderscolors,或者你传递给画布对象的任何设置。

如果你不想让他们自己写在这里。

答案 2 :(得分:0)

它什么都不做)SurfaceView的onDraw是View的onDraw,它是空的。但不能保证它总是空的。如果你没有理由不打电话,你最好打电话给它。