首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >反向AnimatorSet

反向AnimatorSet
EN

Stack Overflow用户
提问于 2015-10-08 20:28:48
回答 3查看 4.7K关注 0票数 3

有没有办法在安卓系统上反向运行AnimatorSetValueAnimator API确实为单独的动画师提供了相反的方法,但没有提供给一组动画师。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-10-31 04:26:40

如果您的AnimatorSet是按顺序播放的,那么您可以使用@黑带中提到的方法:

代码语言:javascript
运行
复制
public static AnimatorSet reverseSequentialAnimatorSet(AnimatorSet animatorSet) {
    ArrayList<Animator> animators = animatorSet.getChildAnimations();
    Collections.reverse(animators);

    AnimatorSet reversedAnimatorSet = new AnimatorSet();
    reversedAnimatorSet.playSequentially(animators);
    reversedAnimatorSet.setDuration(animatorSet.getDuration());

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
        // getInterpolator() requires API 18
        reversedAnimatorSet.setInterpolator(animatorSet.getInterpolator());
    }
    return reversedAnimatorSet;
}

请注意,这只适用于简单的顺序动画,因为原始AnimatorSet中的任何依赖项设置都将丢失。另外,如果在AnimatorSet上使用了内插器,那么它只会在API 18或更高版本上运行(按照上面提到的方法,您可以手动将插值器添加回新的反动画器集)。

AnimatorSet中的单个动画不会反向播放,如果这是可取的,那么您还必须迭代AnimatorSet的动画,并在每个动画上设置一个ReverseInterpolator,参见回答 to Android:逆转动画

票数 4
EN

Stack Overflow用户

发布于 2016-05-27 12:40:38

当您想要反转动画时,您可以从(即ValueAnimator.ofFloat(0, 1) )获取初始输入值,并在调用yourAnimatorSet.start()之前用yourAnimator.setFloatValues(1, 0)切换它们。

票数 1
EN

Stack Overflow用户

发布于 2018-06-06 13:49:27

在API 26中添加了反向()方法:

反向播放AnimatorSet。如果动画已经使用setCurrentPlayTime(long)查找到特定的播放时间,它将从调用反向时开始向后播放。否则,它将从结尾开始并向后播放。此行为仅针对当前动画设置;未来动画的播放将使用默认的向前播放行为。 注意:无限大的AnimatorSet不支持反向。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33025396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档