2013-12-13 33 views
1

因此,在使用cancel()时,动画不会结束。您还需要在视图上调用clearAnimation。有人可以解释为什么吗?我也很奇怪,View需要知道它是什么动画。为什么ObjectAnimator.cancel()不总是工作?

+0

你在使用什么操作系统?我从来没有经历过这个。视图上的'clearnAnimation'不使用'Animator'框架。他们使用旧的'动画'框架,所以都不应该影响其他。 – DeeV

+0

Android 4.0+。也许值得注意的是我在按键上取消动画。 – gruszczy

+0

所以当你调用cancel而没有clearAnimation,动画继续完成? – DeeV

回答

0

您可以调用清除动画来重置视图在动画期间用于转换其画布的转换矩阵。主要的问题是,旧的Android动画系统是一个废话,因为它依赖动画实际视图的“快照”。 至于取消,当你调用取消时会发生的是,你停止正在应用你的动画步骤的runnable。当然,你不能肯定在此状态动画是越来越停止

+0

虽然ObjectAnimators不同,但它不同。他们改变了视图的物理属性 – DeeV

+0

它取决于你正在运行的操作系统版本。 NineOldAndroids使用旧的动画系统在旧的Android版本上重新实现对象动画师。 –

+0

好的。他没有说他使用NineOldAndroids。虽然,它在3.0+上仍然会有同样的问题吗?在这种情况下,我认为NineOldAndroids会默认支持Animator框架。 – DeeV

0

要明确:

  • 的视图动画框架,又名“老动画框架”,只有动画视图的译本,不是实际的属性。因此,让我们说你在X维上动画视图的位置:视图X属性的值保持不变。

    与您的问题相关,这意味着取消动画会将视图拉回原来的位置。因此,动画何时取消并不重要。

  • 在Android 3.0中引入的对象动画为动画的实际属性添加了动画。这意味着,当您取消动画时,该视图仍处于相关位置。所以你可能不知道什么时候动画取消了,但你可以清楚地知道现在在哪里。

  • 如果您需要旧版Android的对象动画,坦白地说为什么要用其他方式,您可以使用9OldAndroids库。

Mor在动画框架here之间的区别。

相关问题