gpt4 book ai didi

Android AnimatorSet 重复然后取消

转载 作者:行者123 更新时间:2023-11-30 00:18:24 27 4
gpt4 key购买 nike

我需要的是一个可无限重复的 AnimatorSet(由 2 个连续的 animations 组成),同时也是一种在安全的情况下停止这些 animations 的方法方式(即最终状态与起始状态相同)。例如,点击屏幕即可停止。

我遇到的主要问题是,当我尝试通过调用 animatorSet.end()cancel() 停止时,动画要么中途停止,要么完成第一个动画(因此不会返回到原始状态)。

我找到了一个解决方案,它实际上是在 SO 上找到的许多不同解决方案的组合。

重要提示:这两个顺序动画一起创建了一个优美的循环,这样 animation1button 缓慢地移到右边,而 animation2 返回它向左移动得更快。这就是为什么我需要停止优雅地结束,以便它完成 animation1animation2,无论我想停止它时的状态如何。

最佳答案

要创建可重复的 AnimatorSet:

animatorSet = new AnimatorSet();
animatorSet.play(animation1).after(animation2);

animatorSet.addListener(new AnimatorListenerAdapter() {
boolean isCancelled;

@Override
public void onAnimationEnd(Animator animation) {
if (!isCancelled) {
animatorSet.start();
}
}

@Override
public void onAnimationCancel(Animator animation) {
this.isCancelled = true;
}
});

animatorSet.start();

现在下面的方法 stopAnimation() 你可以从你的 onClickListener 或者你需要监听的任何东西来调用来停止 animation (熊请记住 animatorSet 必须可访问,例如将其设为一个字段)。

public void stopAnimation(Context context){
guideAnimationSet.removeAllListeners();

最后我不需要任何cancel()end()。这实际上是有道理的:一旦我删除了 listeneranimatorSet 将完成当前的 animations,然后将无法再次启动它因为用于重复的 listener 已经不存在了。

希望对大家有帮助!

关于Android AnimatorSet 重复然后取消,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46756452/

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