【发布时间】:2016-06-06 03:58:15
【问题描述】:
我有一个自动动画的自定义视图。它使用AnimatorSet 在onAnimationEnd() 中调用Animator.start() 以便无休止地重复。这会在创建视图时自动启动。
这些视图用于ListAdapter(实际上是SackOfViewsAdapter,因此不会进行回收)。因此,管理何时取消(或暂停)动画非常重要。
也许动画师应该向适配器注册,然后Activity 应该调用该适配器上的某个方法来取消任何动画?
另一个想法是在onAnimationEnd() 中检查View isShowing() 是否(即如果没有显示,则不要重新启动动画)但是当View 重新出现时这会导致问题。
这对我来说似乎有点 hacky,所以如果有更好的解决方案,我很感兴趣。
另外,如果动画师暂停会怎样?估计不会被垃圾回收吧?
【问题讨论】:
-
View#onDetachedFromWindow? -
这似乎很好地解决了问题,谢谢。我想在
onAttachedToWindow中开始动画以保持对称性并处理视图重新附加到窗口的情况是有意义的。虽然它并不完美,因为动画仍然需要在Activity.onPause中停止/暂停,这意味着动画师仍然需要以某种方式进行跟踪。哦,我猜onWindowVisibilityChanged会解决这个问题。
标签: android android-animation android-custom-view