我想为动画的开始设置一些延迟。因此,当动画不重复时,我们可以轻松使用 startOffset
属性。问题是我有一个将无限重复的动画。但我必须延迟启动它,因此当我使用 startOffset
时,动画总是以该延迟重复,这不是我想要的。另外,我不想使用 Handler
来创建延迟。
编辑:
我从未使用过ObjectAnimator。我的代码如下所示,但它没有动画。我的错误是什么?
ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(view, "translationX", 1000, -1000);
objectAnimator.setDuration(ANIMATION_DURATION);
objectAnimator.setRepeatMode(ValueAnimator.RESTART);
objectAnimator.setRepeatCount(ValueAnimator.INFINITE);
objectAnimator.setStartDelay((5 - i) * INTERVAL);
AnimatorSet animatorSet = new AnimatorSet();
animatorSet.play(objectAnimator);
animatorSet.start();
最佳答案
如果您在 res/drawable 文件夹中的 XML 文件中使用 VectorDrawable 和 AnimatedVectorDrawable 并在 res/animator 文件夹中的 objectAnimator 文件中定义动画,则 startOffset 延迟仅在第一次时起作用,而在重复期间不起作用。重复是立即的。另一方面,如果您希望动画每次重复时都以延迟开始,那么我相信 onAnimationEnd 重置是有效的。
关于android - 仅为开始设置重复动画的开始偏移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46661202/