ObjectAnimator 尝试暂停时的奇怪行为

问题描述

我有一些动画对象。 我使用自定义类来存储它们的 ImageViewObjectAnimator

我有一种暂停它们的方法。 看起来很简单:

public void pause_animations(View view) {
    for (int i = 0; i < num_of_objects; i++) {
        objects[i].animator.pause();
    }
}

这个方法在两种情况下被调用

  1. 作为点击按钮。
  2. 在某个随机时间。

当我按下按钮并运行此代码时 - 一切正常。所有物体都停止移动。 但在第二种情况下,对象只是冻结和传送。

更新我有一个触摸监听器。每次用户触摸屏幕时,都会运行一个方法 try_to_pause();

private void try_to_pause() {
    if (number_of_touches % touches_to_pause == 0) {
        pause_animations(null);
    }
}

解决方法

Animator#pause() 方法的文档中,另一个原因可能是您开始动画是从与主线程不同的线程开始的(重点是我的)。

暂停正在运行的动画。 此方法只能在启动动画的同一线程上调用。