【问题标题】:Why are my map marker ObjectAnimators getting canceled?为什么我的地图标记 ObjectAnimators 被取消了?
【发布时间】:2018-03-31 16:53:17
【问题描述】:

我使用的应用程序使用 ObjectAnimators 将地图标记添加到屏幕后对其进行动画处理。动画将图标替换为逐渐变大或变小的位图。大约 20% 的时间,它会随机取消动画,只留下部分放大或缩小。我知道它会被取消,因为 a) 动画没有完成 b) 如果我添加 AnimatorListener,那么在那些时候会调用 onAnimationCancel()

这似乎与垃圾回收、其他引脚(仅在屏幕上放置一个引脚时可能发生)以及在动画进行时运行的其他代码无关。

它们没有设置为自动取消,即使设置了,也不会被触发,因为没有启动多个相同的动画。

知道为什么会发生这种情况吗?有没有人看到过动画被随机和意外取消?

【问题讨论】:

    标签: android google-maps google-maps-markers google-maps-android-api-2


    【解决方案1】:

    好吧,我觉得自己像个白痴——我终于明白为什么会这样了!

    ObjectAnimators 只有对其目标对象的弱引用。

    如果您没有在其他变量中维护对动画对象的单独引用,那么有时它会在动画完成之前被垃圾收集。 ObjectAnimator 的下一次迭代会尝试更新对象,因为目标对象为空而失败,然后它会取消动画。

    因此,解决方案就是确保您有一个引用该对象的变量,至少在动画完成之前是这样。

    希望这会有所帮助——我确信我不会是唯一遇到此问题的人!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-17
      • 2016-05-29
      • 1970-01-01
      • 1970-01-01
      • 2011-02-23
      • 2013-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多