我是新手。我使用Canvas製作了一個簡單的遊戲。我在onDraw()方法中寫了幾乎所有的代碼,並且有很多計算。在我的代碼中,在onDraw()的最後有一個invalidate()方法。這就是我打電話重畫我的觀點的方式。我怎樣才能重畫只有一部分畫布?主要的問題是我在onDraw()裏面進行了大量的計算,並且減慢了整個遊戲的速度。我試圖用位圖喜歡這裏:如何重繪部分Canvas?
creating a bitmap - stackOverflow
但因爲建立一個位圖太慢過程中它並沒有解決問題。使用SurfaceHolder和Callback是一個好主意嗎?我試圖使用它,但我不知道這是否是正確的方式來做我想做的事情。有誰能夠幫助我?如何重新繪製我的視圖只是部分停止選擇的元素總是通過新計算重繪(從保存狀態中繪製)?我只想在需要時重繪整個視圖。如果有人發佈能夠解決這個問題的代碼(甚至可以是兩個矩形),那將會很棒。
首先,你不應該在'onDraw'內執行大量的計算或內存分配。它們必須在調用invalidate之前完成。您可以添加一個執行這些計算的新線程。並在他們完成後調用postInvalidate();.並且不要自己調用'onDraw','invalidate'或'postInvalidate'自己做。 – Mikhail