使画布部件无效

时间:2017-03-11 18:14:53

标签: android animation android-canvas android-custom-view

我需要创建一个带动画的自定义视图。我扩展了View类并覆盖了onDraw。此自定义视图有一些方法,调用时必须使用动画画布(在onDraw内部)重绘部分。我通过ValueAnimator在onAnimationUpdate中制作动画,在那里我计算动画偏移并调用invalidate()。它工作正常,但我必须重绘整个视图,动画部分和其余部分。我尝试使用

invalidate (int l, int t, int r, int b)

但在这种情况下动画不起作用。 onDraw只调用了两次。

  1. 是否可以仅重绘画布部分,或者每次都必须重绘所有内容?
  2. 将ValueAnimator用于画布动画是一种好习惯吗?

1 个答案:

答案 0 :(得分:1)

是的,基本上你可以使用你描述的方法重绘一部分视图。但是,如果使用ValueAnimator进行动画处理,则重绘整个视图的开销可以忽略不计,并且可以避免动画中与视图的“脏”部分相关的问题无法重新绘制。

只需在没有参数的情况下调用invalidate。

P.S。:如果它让您高枕无忧,只需打开分析工具并在动画运行时观察它们。在正常情况下,你甚至无法看到反应。