人們如何去做這件事?有人可以給我一個大綱嗎?Android上的Java雙緩衝與畫布和表面視圖
從我在網上找到的,好像在我的run()函數:
- 創建位圖
- 創建畫布並將其連接到該位圖
- lockCanvas()
- 呼叫平局(畫布)和位圖繪製到後臺緩衝區(如何?)
- unlockCanvasAndPost()
這是正確的嗎?如果是這樣,我能否得到一點解釋;這些步驟意味着什麼?我如何實施它們?我從來沒有爲Android編程過,所以我是一個真正的小菜鳥。如果不正確,我該怎麼做?
人們如何去做這件事?有人可以給我一個大綱嗎?Android上的Java雙緩衝與畫布和表面視圖
從我在網上找到的,好像在我的run()函數:
這是正確的嗎?如果是這樣,我能否得到一點解釋;這些步驟意味着什麼?我如何實施它們?我從來沒有爲Android編程過,所以我是一個真正的小菜鳥。如果不正確,我該怎麼做?
它已經被雙緩衝,這就是unlockCanvasAndPost()調用的功能。沒有必要創建一個位圖。
從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'上繪圖時,你實際上正在繪製* next *幀,而*當前*幀正在顯示。 'unlockCanvasAndPost()'調用將切換下一個幀緩衝區與當前幀緩衝區,以便顯示更新的'Canvas'。 – Wroclai
如果您希望能夠放大/縮小並移動您的「周圍空間」,則位圖部分將派上用場。 – TheRealChx101