Android SurfaceView onDraw问题

时间:2011-06-21 19:08:10

标签: android surfaceview ondraw

我的SurfaceView的onDraw方法绘制了一个由TouchEvents在屏幕上确定的路径的LinkedList。我想添加一个撤消功能,从LinkedList中删除最后一个路径节点。点击按钮时,路径将从列表中删除,但SurfaceView不会更新,直到我再次点击撤消按钮或触摸屏幕。

谢谢, 埃里克

2 个答案:

答案 0 :(得分:3)

  

在一个线程中每隔60毫秒调用一次OnDraw,但它没有在那里更新   这让我感到困惑。

你应该使用

postInvalidate();

invalidate();

postInvalidate();告诉主UI线程在下一个方便的时间重绘。你这样做的方式不适用于单独的线程。

答案 1 :(得分:0)

这是因为只有在调用onDraw()时才会更新视图,这是由于屏幕活动(如你触摸它)或者以编程方式强制这样做而发生的。

您想强制它:使用从View继承的invalidate()方法。

如果删除发生在SurfaceView内部,只需在完成删除后写入invalidate()。如果它发生在外面,那么只需要执行surfaceViewInstance.invalidate()。

希望这有帮助