2011-06-21 50 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