在 Android 版本低于 19 的 API 中如何暂停/恢复动画?

12

我知道ObjectAnimator对象上的暂停和恢复方法仅适用于API:19。然而,既然我,也有一半的Android用户没有这个API,是否有替代方法可以使您的动画暂停并从相同状态恢复而不是从头开始?任何帮助都将不胜感激。


可能是这个问题的重复:如何在Android API 19以下恢复和暂停ObjectAnimator? - Alex Cohn
实际上,那个问题是这个的重复。谢谢提供链接。 - Bazinga
至少就我所理解的而言,“重复”标记一个问题并没有负面含义。另一方面,SO鼓励我们通过答案选择重复问题,因此我的选择是将标记放在先被回答的那个问题上。 - Alex Cohn
1个回答

21

在我的项目中,我需要制作旋转动画(可以暂停并从相同或结束位置恢复),我的解决方法是获得动画器的当前时间(当动画结束或者我点击暂停时),接着在启动动画之后,使用 ObjectAnimator 类的 "setCurrentPlayTime(带有结束时间)" 方法来设置时间。我使用 getCurrentPlayTime() 来获取当前时间,并使用 ObjectAnimator 类的 setCurrentPlayTime() 方法来设置时间。

参考资料: http://developer.android.com/reference/android/animation/ValueAnimator.html#setCurrentPlayTime(long) http://developer.android.com/reference/android/animation/ValueAnimator.html#getCurrentPlayTime()

private ObjectAnimator mObjectAnimator;
private long mAnimationTime;

private void stopAnimation() {
    if(mObjectAnimator != null) {
        mAnimationTime = mObjectAnimator.getCurrentPlayTime();
        mObjectAnimator.cancel();
    }
}

private void playAnimation() {
    if (mObjectAnimator != null) {
        mObjectAnimator.start();
        mObjectAnimator.setCurrentPlayTime(mAnimationTime);
    }
}

它可以与ObjectAnimator一起使用,但我们如何暂停/恢复ObjectAnimatorSet? - Deven
你好,NikolaDev。我尝试着实现你提供的取消动画暂停的解决方案,但是当我开始并设置当前播放时间时,动画重新启动了。你有什么想法是什么原因导致这种情况吗? - Z. Kiwan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接