1

そのサーフェスビューの周りの赤はレンダリングでより速く動作しますが、ビューよりも多くのリソースを消費します。

私のテストから、私はこのコードを試しました:

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    canvas.drawColor(Color.WHITE);
    Log.i("OnDraw","ping");
    invalidate();
}

1つはサーフェスビュークラスのレンダリングで、もう1つはビュークラスのレンダリングで、どちらにも同じコードが含まれています。ログチャットから、Log.iメソッドからのメッセージがビュークラスでより速く更新されていることがわかりました-各クラス間の遅延は約70ミリ秒ですが、surfaceViewの場合は更新が遅くなりました-約100ミリ秒それぞれの間の遅延。

だから...何が得られますか?

4

2 に答える 2

1

SurfaceView の主な利点は、別のスレッドから描画できることです。したがって、リアルタイム ゲームの場合、SurfaceView や GLSurfaceView が必要になることは間違いありません。カードやドミノなどのゲームの場合、ビューはおそらくゲーム以外のアプリケーションと同じように問題ありません

描画メカニズムに関しては、SurfaceView を特に高速化するものは何もないと思いますが、通常のビューは UI スレッドからのみ更新できるため、SurfaceView が唯一の選択肢であることがよくあります。

于 2012-09-20T20:33:33.503 に答える
0

デバッグを使用して実際の電話で同じコードをテストした後、ビューとサーフェスビューの両方の更新速度に大きな目に見える違いはないと言えますが、エミュレーターよりも大きな改善があり、どちらも約 20 ミリ秒で更新されました。 .

于 2012-09-20T20:52:58.820 に答える