2011-06-21 46 views
4

我的SurfaceView的onDraw方法繪製由TouchEvents在屏幕上確定的路徑的LinkedList。我想添加一個撤消功能,從LinkedList中刪除最後一個路徑節點。當按鈕被擊中時,路徑將從列表中移除,但SurfaceView不會更新,直到我再次按下撤消按鈕或觸摸屏幕。Android SurfaceView onDraw問題

感謝, 埃裏克

+0

你可能會試着問一個具體的問題,顯示一些你的相關代碼,併爲你的老問題給出正確的答案。 – kabuko

回答

3

的OnDraw被稱爲每隔60毫秒的線程,但它並沒有更新有 這混淆了我。

你應該使用:

postInvalidate(); 

invalidate(); 

postInvalidate();告訴主UI線程重繪在下次方便的時間。你這樣做的方式不適用於單獨的線程。

0

這是因爲當的onDraw()被調用視圖只更新,這恰好由於屏幕活動(如你觸摸它),或者當它編程被迫這樣做。

你想強制它:使用繼承自View的invalidate()方法。

如果刪除發生在您的SurfaceView內部,只需寫入invalidate()後刪除完成。如果它發生在外面,那麼只需執行surfaceViewInstance.invalidate()。

希望這有助於

+0

我試過在SurfaceView裏面使用invalidate,但它仍然沒有更新。 OnDraw在線程中每60毫秒調用一次,但不會在那裏更新,這會讓我感到困惑。 – erversteeg