7

これを行うにはどうすればよいですか?誰か私に概要を教えてもらえますか?

私がオンラインで見つけたものから、それは私の run() 関数のようです:

  1. ビットマップを作成する
  2. キャンバスを作成し、ビットマップにアタッチします
  3. lockCanvas()
  4. draw(canvas) を呼び出し、ビットマップをバック バッファーに描画します (方法??)
  5. unlockCanvasAndPost()

これは正しいです?もしそうなら、私は少し説明を得ることができますか?これらの手順は何を意味し、どのように実装すればよいですか? 私はこれまで Android 向けにプログラミングしたことがないので、本当に初心者です。それが正しくない場合、どうすればいいですか?

4

2 に答える 2

17

それはすでにダブルバッファリングされており、それがunlockCanvasAndPost()呼び出しが行うことです。ビットマップを作成する必要はありません。

于 2011-06-30T17:20:31.157 に答える
2

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);

各ホルダーのロックで異なるダブルバッファーキャンバスを取得せずに描画しているメインバッファーを取得しています。

于 2013-03-04T03:36:21.463 に答える