代码之家  ›  专栏  ›  技术社区  ›  Kevik

在SurfaceView回调方法中对onDraw的super调用做什么,例如:super.onDraw(画布)

  •  -1
  • Kevik  · 技术社区  · 11 年前

    在这个例子中,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 回复  |  直到 7 年前
        1
  •  1
  •   minipif    11 年前

    如果你看 SurfaceView 的源代码,您可以看到它扩展了 View 而且它不会覆盖 onDraw() 方法,所以 看法 onDraw()上 正在调用的方法。

    现在看看 看法 onDraw()上 方法:

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

    它没有任何作用。所以打电话 super.onDraw() 在你班上什么都不会做。

        2
  •  0
  •   Leonidos    11 年前

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

        3
  •  0
  •   Suresh Atta    11 年前

    它调用方法 onDraw() 在课堂上 SurfaceView .

    一般来说,不是在你的 具体案例 :

    由于它是超级类实现中的一个基类 borders , colors ,或您传递的画布对象的任何设置。

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