我是否应该在覆盖onDraw时考虑视图转换?

时间:2012-05-05 18:41:40

标签: android drawing transformation android-canvas

覆盖onDraw()时,我是否应该考虑查看翻译?或者它已经应用于画布翻译?

即。我应该执行

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

onDraw()的第一行?

onDraw()调用中应用于画布的所有转换是否会在后续调用中持续存在?即我应该假设canvas每次都未进行转换吗?

2 个答案:

答案 0 :(得分:1)

据我所知,画布不是持久的,因此你应该执行翻译。但是,您可以保存画布并将其还原:

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

Android View.onDraw() always has a clean Canvas

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

答案 1 :(得分:1)

不,你不需要这样做。在调用onDraw之前应用View的翻译。

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