0

我有三个动画,比如缩放、平移和缩放。我按顺序播放这些动画。前两个工作正常,但最后一个缩放动画将视图位置重置为原始位置。如果我删除最后一个缩放动画,它工作正常,视图在平移动画后保持新位置。您对这种行为有任何想法吗?

AnimationSet animationSet = new AnimationSet(false);
animationSet.setFillAfter(true);

ScaleAnimation scaleAnimation1 = new ScaleAnimation(0.0f, 1.0f, 0.0f, 1.0f);
scaleAnimation1.setDuration(500);
scaleAnimation1.setFillAfter(true);

TranslateAnimation moveAnim = new TranslateAnimation(0, -x, 0, -y);
moveAnim.setDuration(1000);
moveAnim.setStartOffset(500);
moveAnim.setFillAfter(true);

ScaleAnimation scaleAnimation2 = new ScaleAnimation(1.0f, 0.0f, 1.0f, 0.0f);
scaleAnimation2.setDuration(500);
scaleAnimation2.setStartOffset(1000);
scaleAnimation2.setFillAfter(true);
scaleAnimation2.setFillBefore(true);

animationSet.addAnimation(scaleAnimation1);
animationSet.addAnimation(moveAnim);
animationSet.addAnimation(scaleAnimation2);
4

1 回答 1

2

scaleAnimation2.setFillAfter(true);- 如果 fillAfter 为 true,则此动画执行的转换将在完成后持续存在

scaleAnimation2.setFillBefore(true);- 如果 fillBefore 为真,此动画将在动画开始时间之前应用其变换。

这两个属性不能同时起作用,后面设置的那个有效。因此,删除scaleAnimation2.setFillBefore(true);可能会解决您的问题。

于 2013-10-04T09:21:24.117 回答