1
我一直在遇到一個奇怪的問題,試圖使用SurfaceView。像this one一樣,它可以工作,但它在2幀*之間保持閃爍。此外,unlockCanvasAndPost大約30-50Ms,這是正常的嗎?Android - SurfaceView。無需清除屏幕即可更新。 (注:我是Noob)
每次重繪所有內容在這種情況下不是一個好主意,我不認爲每幀重繪350個點是個好主意。 *兩幀之間閃爍:假設我在(X,X)的每一幀畫一個點,X是幀號。 我會看到點1,3 3,3,5,5 7,7 9,9顯示每個損害幀和點2,2 4,4,6,6 8,8顯示每對幀。
這裏是繪製代碼:
Canvas C;
while(running)
{
synchronized (mSurfaceHolder)
{
DoCalc(); //Doesn't do anything special. changes vars X1 and Y1
C=mSurfaceHolder.lockCanvas();
aDraw(C); // Only contains canvas.drawRect(X1-1, Y1-1, X1+1,Y1+1, P);
mSurfaceHolder.unlockCanvasAndPost(C); //Why does it take so long?
}
try {Thread.sleep(500);} //Temporary delay.
catch (InterruptedException e) {}
}
謝謝,我會試試看。 – Anon
現在有一段時間了,令人驚歎,謝謝。它的工作非常好。 – Anon
太棒了,至於速度,通常Android設備至少可以做到每秒60幀,大約16Ms。除非你在模擬器上運行它,否則你的代碼應該很慢,除非你的sleep(),否則你的代碼應該很慢。或者你的paint P是複雜的並且使用了一些位圖紋理類型的填充。 – Lumis