我有一个可以执行 3 种不同动画的 AnimationSet。动画结束后,我想暂停应用程序 3 秒,然后一切都恢复到开始位置。
我怎么做 ?
好吧,有一个animation.hasEnded()
函数可以用来测试动画是否完成。当返回 true 时,您可以使用 java 计时器在您想要等待的毫秒数之后安排任务。AnimationSet 也有一个函数来获取动画的持续时间。
看看... Animation 和AnimationSet
我认为您可能可以通过AnimationListener Set one 以某种方式实现此效果,以在动画结束时获取回调并添加延迟的可运行对象,它将所有内容移回适合您的位置。但是,我认为这样做可能会有些复杂,因为它需要将 fillAfter 设置为 true,然后手动将视图放置在 Runnable 中的原始位置,这会延迟发布。
我认为获得相同效果的更直接的解决方案是简单地向您的集合添加第 4 个动画,该动画在所有其他动画都完成后延迟开始。使这第4个动画持续3秒,并使其无可见效果(即增长0%)。这应该为您建立 3 秒的暂停,并且仍然可以处理将所有视图移回其原始位置(无需手动执行)。使用此解决方案,您将 fillAfter 设置为 false,这将导致您的视图“快速恢复”。通过添加另一个持续 3 秒但没有可见效果的动画,这对用户来说就像是一个暂停。