【发布时间】:2019-01-16 03:06:32
【问题描述】:
我使用以下代码创建了一系列(最多 4 个)动画。它们都是同时对几个 ImageView 的简单翻译。
在一个动画“帧”(即所有视图的移动)之后,onAnimationEnd 调用下一帧。
问题是:每次调用 onAnimationEnd 后都会有短暂但明显的延迟。看起来有翻译的自动加速和减速以使其看起来更自然,但在这种情况下这是不需要的。 有没有办法避免这种情况?
提前致谢!
private void animateFrame(final int frame) {
List<Animator> allAnimations = new ArrayList<>();
AnimatorSet s = new AnimatorSet();
for (int p = 0; p < playerImages.size(); p++) {
Animator animation = ObjectAnimator.ofFloat(playerImages.get(p), "translationX", playerPositions[frame][0][p] * factorX);
allAnimations.add(animation);
ObjectAnimator animation2 = ObjectAnimator.ofFloat(playerImages.get(p), "translationY", playerPositions[frame][1][p] * factorY);
allAnimations.add(animation2);
Log.d(TAG, "onClick: MOVING PLAYER " + p + " TO: " + playerPositions[frame][0][p] + "/" + playerPositions[frame][1][p]);
if (playerPositions[frame][0][p] != 0) {
s.playTogether(allAnimations);
s.setDuration(durations[frame - 1]);
s.start();
s.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animator) {
}
@Override
public void onAnimationEnd(Animator animator) {
animateFrame(frame+1);
}
@Override
public void onAnimationCancel(Animator animator) {
}
@Override
public void onAnimationRepeat(Animator animator) {
}
});
}
}
}
【问题讨论】: