Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 为什么ObjectAnimator.cancel()不';你不总是工作吗?_Android_Animation - Fatal编程技术网

Android 为什么ObjectAnimator.cancel()不';你不总是工作吗?

Android 为什么ObjectAnimator.cancel()不';你不总是工作吗?,android,animation,Android,Animation,因此,在动画上使用cancel()时,有一些关于动画没有结束的问题。您还需要在视图上调用clearAnimation。有人能解释为什么会这样吗?我也很奇怪,视图需要知道它的动画是什么。调用clear animation来重置视图在动画期间用于变换画布的变换矩阵。主要问题是旧的Android动画系统是一个垃圾,因为它依赖于对实际视图的“快照”进行动画制作。 至于cancel,当调用cancel时,所发生的是停止正在应用动画步骤的runnable。当然,您无法确定动画在哪种状态下停止以清除: 视图

因此,在动画上使用
cancel()
时,有一些关于动画没有结束的问题。您还需要在视图上调用
clearAnimation
。有人能解释为什么会这样吗?我也很奇怪,
视图
需要知道它的动画是什么。

调用clear animation来重置视图在动画期间用于变换画布的变换矩阵。主要问题是旧的Android动画系统是一个垃圾,因为它依赖于对实际视图的“快照”进行动画制作。 至于cancel,当调用cancel时,所发生的是停止正在应用动画步骤的runnable。当然,您无法确定动画在哪种状态下停止

以清除:

  • 视图动画框架(也称为“旧动画框架”)仅为视图的平移设置动画,而不为实际属性设置动画。因此,假设您在X维度上设置了视图位置的动画:视图的X属性的值保持不变

    与您的问题相关,这意味着取消动画会将视图拉回其原始位置。所以动画什么时候被取消并不重要

  • Android 3.0中引入的对象动画可以为实际属性设置动画。这意味着取消动画时,视图将保持在其相关位置。因此,您可能不知道动画取消的确切时间,但现在可以清楚地找到它的绘制位置

  • 如果您需要旧版本Android的对象动画,坦率地说,为什么要采用其他方式,您可以使用该库


Mor了解动画框架之间的差异。

您使用的是什么操作系统?我从未经历过这种情况<视图上的code>clearnAnimation不使用
Animator
框架。他们使用旧的
动画
框架,因此两者都不应该影响另一个。也许值得一提的是,我在键盘上取消了动画。所以,当你在没有clearAnimation的情况下调用cancel时,动画将继续完成?是的,这正是发生的情况。但对于ObjectAnimators来说,这是不同的。它们会更改视图的物理属性,具体取决于您运行的操作系统版本。NineodelDroids使用旧的动画系统OK在旧的android版本上重新实现对象动画。他没有说他用的是九头针。尽管如此,它在3.0+上还会有同样的问题吗?在这种情况下,我认为NineodelDroids将默认为支持的Animator框架。是的,在较新的设备上,它将使用新的动画系统。他在4.0+上,所以这不应该成为问题。这就是我要说的。我从来没有遇到过这样的问题,所以我只是想更好地理解它。