在覆盖 onDraw 时,我应该考虑视图翻译吗?


覆盖

onDraw()时是否应该考虑视图翻译?或者它已经应用于画布翻译?

即我应该执行

canvas.translate(getTranslationX(), getTranslationY());

onDraw()的第一行?

在调用

中应用于画布onDraw()转换是否都会保留在后续调用中? 即我应该假设canvas每次都是未转换的吗?

不,您不需要这样做。视图的转换在调用 onDraw 之前应用。

正如 HardCoder 指出的那样,您对传递给 onDraw 的 Canvas 所做的状态更改不会持续到下一次调用 onDraw 时。

据我所知,画布不是持久的,因此您应该执行翻译。但是,您可以保存画布并恢复它:

http://maohao.wordpress.com/2009/09/30/canvas-save-canvas-restore/

Android View.onDraw(( 总是有一个干净的 Canvas

http://blahti.wordpress.com/2010/12/20/moving-views-in-android-part-1/

最新更新