对于Android画布游戏,我使用以下(最小化)方法请求重绘SurfaceView:
private void refreshView() {
c = surfaceView.getHolder().lockCanvas();
synchronized (surfaceView.getHolder()) {
surfaceView.onDraw(c);
}
但是自从最后一个android sdk(22.2.1)以来,它在 surfaceView.onDraw 上给了我一个Lint警告
可疑方法通话;应该打电话给'#34;画"而不是 "的onDraw"
当我使用绘图而不是onDraw时,屏幕保持黑色。当我使用postInvalidate()时,渲染性能会降低。
我做错了吗?有没有更好的方法来实现这个?
答案 0 :(得分:3)
按照惯例,名为On***
的Android API方法不应该由您的代码直接调用,而只能由Android操作系统本身调用。我希望,在这种情况下,有人会告诉你使用什么而不是它...
对于性能:如果性能成为问题,为什么不使用OpenGL? (或使用OpenGL的库)
答案 1 :(得分:2)
我知道这不是最佳解决方案,但我使用@SuppressLint("WrongCall")
来避免错误消息。
答案 2 :(得分:2)
而不是onDraw(c)使用 draw(c)并将方法onDraw(Canvas画布)更改为绘制(Canvas画布) .hope这有助于
答案 3 :(得分:0)
我遇到了同样的错误。将onDraw函数更改为其他名称后,即。 Fix_onDraw,一切都还可以。