3

Android キャンバス ゲームの場合、次の (最小化された) メソッドを使用して、SurfaceView の再描画を要求します。

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

しかし、最後のAndroid SDK(22.2.1)以降、surfaceView.onDrawでLint警告が表示されます

疑わしいメソッド呼び出し。おそらく「onDraw」ではなく「draw」を呼び出す必要があります

onDraw の代わりに draw を使用すると、画面が真っ暗のままになります。postInvalidate() を使用すると、レンダリング パフォーマンスが低下します。

私が間違っていることはありますか?これを実装するより良い方法はありますか?

4

4 に答える 4

3

慣例により、like という名前の Android API のメソッドはOn***、コードから直接呼び出すのではなく、Android OS 自体からのみ呼び出す必要があります。この状況で代わりに何を使用すればよいか誰かが教えてくれることを願って
います. (または 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 に答える