Android Developers Groupの手順では、すべてのレンダリングが描画されるバッファキャンバスが必要であると言います。
Bitmap buffCanvasBitmap;
Canvas buffCanvas;
// Creating bitmap with attaching it to the buffer-canvas, it means that all the changes // done with the canvas are captured into the attached bitmap
tempCanvasBitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888);
tempCanvas = new Canvas();
tempCanvas.setBitmap(tempCanvasBitmap);
// and then you lock main canvas
canvas = getHolder().lockCanvas();
// draw everything you need into the buffer
tempCanvas.drawRect.... // and etc
// then you draw the attached bitmap into the main canvas
canvas.drawBitmap(tempCanvasBitmap, 0, 0, drawView.getPaint());
// then unlocking canvas to let it be drawn with main mechanisms
getHolder().unlockCanvasAndPost(canvas);
各ホルダーのロックに異なるダブルバッファーキャンバスを取得せずにメインバッファーを取得しています。
私はそれを得ていません。だから、私はロックとロック解除の間に必要なものをすべて描画し、ダブルバッファリングはそれ自身で発生しますか?私がロックする前に描く必要はありませんか?申し訳ありませんが、私はこれを可能な最も基本的な方法で説明する必要があります... – Kalina
@TheBeatlemaniac: 'LockCanvas()'が呼び出された後に 'Canvas'を描画するとき、 *現在の*フレームが表示されている間に表示されます。 'unlockCanvasAndPost()'コールは、更新された 'Canvas'を表示するために、現在のフレームバッファで次のフレームバッファを切り替えます。 – Wroclai
ビットマップ部分は、ズームイン/ズームアウトしたり、 "ワーススペース"を動かしたい場合に便利です。 – TheRealChx101