gpt4 book ai didi

android - 如何在 Android 中恢复和暂停 API 级别低于 19 的 ObjectAnimator?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:57:27 27 4
gpt4 key购买 nike

我知道 API 级别 19 支持 ObjectAnimators 上的 pause() 和 resume()。但是在我的 API 级别 14 的项目中,我有一个 ObjectAnimator 应用于 ImageView 以旋转它。我想在触摸时暂停 ObjectAnimator 提供的动画,然后从 ImageView 所在的位置(触地前)恢复它。

所以我试图保存当前播放时间并取消我的 stopAnimation() 函数上的对象动画器。

private void stopAnimation(){
currentTime = mGlobeAnimator.getCurrentPlayTime();
mGlobeAnimator.cancel();
}

在 startAnimation() 函数中,我重新创建动画器,将其目标设置为 ImageView ,设置保存的播放时间并启动它。

private void startAnimation(Context context, View view, float startAngle) {
ObjectAnimator globeAnimatorClone = (ObjectAnimator)AnimatorInflater.loadAnimator(context, R.animator.rotate_globe);
globeAnimatorClone.setTarget(mImageView);
globeAnimatorClone.setCurrentPlayTime(currentTime);
globeAnimatorClone.start();
}

这是行不通的。任何人都可以帮忙提供任何指针来暂停和恢复动画师为 19 之前的 API 级别提供的动画吗?

最佳答案

我想我是通过启动动画器然后设置 currentPlayTime() 来让它工作的。文档清楚地告诉(这是我偶然发现的)如果动画尚未开始,使用此方法设置的 currentPlayTime 将不会向前推进!

将动画的位置设置为指定的时间点。这个时间应该在 0 和动画的总持续时间之间,包括任何重复。如果动画还没有开始,那么设置到这个时间后就不再往前推进了;它只会将时间设置为此值并根据该时间执行任何适当的操作。如果动画已经在运行,则 setCurrentPlayTime() 会将当前播放时间设置为此值并从该时间点继续播放。 http://developer.android.com/reference/android/animation/ValueAnimator.html#setCurrentPlayTime(long)

private void stopAnimation(){
mCurrentPlayTime = mRotateAntiClockwiseAnimator.getCurrentPlayTime();
mRotateAntiClockwiseAnimator.cancel();
}

private void startAnimation() {
mRotateAntiClockwiseAnimator.start();
mRotateAntiClockwiseAnimator.setCurrentPlayTime(mCurrentPlayTime);
}

关于android - 如何在 Android 中恢复和暂停 API 级别低于 19 的 ObjectAnimator?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25231707/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com