我的SurfaceView的onDraw方法繪製由TouchEvents在屏幕上確定的路徑的LinkedList。我想添加一個撤消功能,從LinkedList中刪除最後一個路徑節點。當按鈕被擊中時,路徑將從列表中移除,但SurfaceView不會更新,直到我再次按下撤消按鈕或觸摸屏幕。Android SurfaceView onDraw問題
感謝, 埃裏克
我的SurfaceView的onDraw方法繪製由TouchEvents在屏幕上確定的路徑的LinkedList。我想添加一個撤消功能,從LinkedList中刪除最後一個路徑節點。當按鈕被擊中時,路徑將從列表中移除,但SurfaceView不會更新,直到我再次按下撤消按鈕或觸摸屏幕。Android SurfaceView onDraw問題
感謝, 埃裏克
的OnDraw被稱爲每隔60毫秒的線程,但它並沒有更新有 這混淆了我。
你應該使用:
postInvalidate();
不
invalidate();
postInvalidate();
告訴主UI線程重繪在下次方便的時間。你這樣做的方式不適用於單獨的線程。
這是因爲當的onDraw()被調用視圖只更新,這恰好由於屏幕活動(如你觸摸它),或者當它編程被迫這樣做。
你想強制它:使用繼承自View的invalidate()方法。
如果刪除發生在您的SurfaceView內部,只需寫入invalidate()後刪除完成。如果它發生在外面,那麼只需執行surfaceViewInstance.invalidate()。
希望這有助於
我試過在SurfaceView裏面使用invalidate,但它仍然沒有更新。 OnDraw在線程中每60毫秒調用一次,但不會在那裏更新,這會讓我感到困惑。 – erversteeg
你可能會試着問一個具體的問題,顯示一些你的相關代碼,併爲你的老問題給出正確的答案。 – kabuko