首页 > 解决方案 > 尝试暂停时 ObjectAnimator 的奇怪行为

问题描述

我有一些动画对象。我使用自定义类来存储他们ImageView的 s 和ObjectAnimators

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

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

此方法在 2 种情况下被调用:

  1. 作为一个按钮 onClick。
  2. 在某个随机时间。

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

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

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

标签: javaandroidandroid-studioobjectanimator

解决方案


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

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


推荐阅读