我是Android开发新手,看书Hello Android
。它使用了一个Sudoku示例,我所指的代码是here.我是否在每次通话中使整个屏幕无效?
在此onTouchScreen中,它调用select方法,该方法调用invalidate两次。问题是,在invalidating
之后是onDraw
方法吗?所以才会在这种情况下,我的选择方法中,它会做
- 无效
- 调用的OnDraw
- 做一些东西
- 无效
- 调用的OnDraw
这究竟是怎么它会发生,而且,整个屏幕会重新生成吗?所有的数字和提示等,因为从该书作者说
在这个例子中的早期版本,我无效整个 屏幕,只要游标被感动了。因此,在每一个键 按下,整个谜题必须重绘。这导致它显着地落后于 。切换代码以仅使最小的 矩形变为无效,这使得其运行得更快。
他究竟想在这里说什么?
新增信息
我加了一些日志中的onDraw方法,一些在起跑线,有的在for循环。每当我触摸一个新的矩形时,所有的日志都会被调用。这是否意味着整个屏幕都会重新填充,因为onDraw中的所有代码都会重新执行?
@ ZhenghonghWang我不确定我是否正确地得到它,我设置了一些脏东西,并在我的代码中,在onDraw方法中,我没有明确地获取脏部分。所以你是说在我的情况下,整个事情会得到渲染?因为根据作者的说法,他已经以最佳方式做到了,而且只会渲染脏部分。 – Kraken
是的,你提到的作者是正确的。但绘图过程可以更好地优化。我更新了我的答案。 –
使用rect失效不会改变打开硬件加速的画布剪辑边界。无论传递给Invalidate的矩形如何,整个视图总是重绘。 – jjxtra