3

对于 Android 画布游戏,我使用以下(最小化)方法请求重绘 SurfaceView:

    private void refreshView() {
        c = surfaceView.getHolder().lockCanvas();
        synchronized (surfaceView.getHolder()) {
            surfaceView.onDraw(c);
        }

但是自从上一个android sdk(22.2.1)以来,它在surfaceView.onDraw上给了我一个Lint警告

可疑的方法调用;可能应该叫“draw”而不是“onDraw”

当我使用 draw 而不是 onDraw 时,屏幕保持黑色。当我使用 postInvalidate() 时,渲染性能会降低。

有什么我做错了吗?有没有更好的方法来实现这一点?

4

4 回答 4

3

按照惯例,Android API 中命名为 like 的方法On***不应由您的代码直接调用,而只能由 Android 操作系统本身调用。我希望,有人会告诉你在这种情况下使用什么来代替它......
对于性能:如果性能会成为问题,你为什么不使用 OpenGL?(或使用 OpenGL 的库)

于 2013-10-01T19:37:09.543 回答
3

我知道这不是最好的解决方案,但我曾经@SuppressLint("WrongCall")避免出现错误消息。

于 2014-11-06T10:40:34.003 回答
2

而不是 onDraw(c) 使用draw(c)并将 Method onDraw(Canvas canvas) 更改为draw(Canvas canvas)。希望这会有所帮助

于 2016-09-21T10:39:19.780 回答
0

我遇到了同样的错误。在我将 onDraw 函数更改为另一个名称后,即。Fix_onDraw,一切正常。

于 2014-01-23T15:04:41.477 回答