-1

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

编辑:我刚刚找到了一个很好的问题和答案,以帮助澄清 supercall 的目的, 何时不调用 super() 覆盖时的方法?

4

3 回答 3

1

如果您查看SurfaceView's 的源代码,您会看到它扩展View并且它没有覆盖该onDraw()方法,因此它是被调用的View's方法。onDraw()

现在看View'sonDraw()方法:

/**
 * Implement this to do your drawing.
 *
 * @param canvas the canvas on which the background will be drawn
 */
protected void onDraw(Canvas canvas) {
}

它什么也没做。所以打电话给super.onDraw()你的班级不会有任何作用。

于 2013-10-03T08:39:33.193 回答
0

它调用onDraw() 类中的方法SurfaceView

一般来说,不是在您的具体情况下

由于它是超类实现中的基类,因此基本的东西,如borders,colors或任何设置为您传递的画布对象。

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

于 2013-10-03T08:27:53.563 回答
0

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

于 2013-10-03T08:40:45.990 回答