我的SurfaceView的onDraw方法绘制了一个由TouchEvents在屏幕上确定的路径的LinkedList。我想添加一个撤消功能,从LinkedList中删除最后一个路径节点。点击按钮时,路径将从列表中删除,但SurfaceView不会更新,直到我再次点击撤消按钮或触摸屏幕。
谢谢, 埃里克
答案 0 :(得分:3)
你应该使用在一个线程中每隔60毫秒调用一次OnDraw,但它没有在那里更新 这让我感到困惑。
:
postInvalidate();
不
invalidate();
postInvalidate();
告诉主UI线程在下一个方便的时间重绘。你这样做的方式不适用于单独的线程。
答案 1 :(得分:0)
这是因为只有在调用onDraw()时才会更新视图,这是由于屏幕活动(如你触摸它)或者以编程方式强制这样做而发生的。
您想强制它:使用从View继承的invalidate()方法。
如果删除发生在SurfaceView内部,只需在完成删除后写入invalidate()。如果它发生在外面,那么只需要执行surfaceViewInstance.invalidate()。
希望这有帮助