我正在使用Android KitKat,这似乎没有按预期工作。我有一个AnimatiorSet,应该在一段延迟后启动,但我想在动画实际开始时(延迟之后)做一些动作。似乎AnimatorSet在调用start()之后立即在侦听器上调用onAnimationStarted。
以下示例代码:
AnimatorSet set = new AnimatorSet();
set.playTogether(
ObjectAnimator.ofFloat(obj, "x", 10),
ObjectAnimator.ofFloat(obj, "y", 10));
set.setStartDelay(5000);
set.setDuration(1000)
set.addListener(new AnimatorListenerAdapter()
{
@Override
public void onAnimationStart(Animator animation)
{
// do sth
}
});
set.start();
在这种情况下,立即调用侦听器而不是延迟侦听器。为了解决这个问题,我检查了向传递给playTogether的动画师添加监听器是否给出了预期的结果,实际上是这样。这是一个错误吗?
答案 0 :(得分:4)
另一个解决方法是:
@Override
public void onAnimationStart(Animator animator) {
rootView.postDelayed(new Runnable() {
@Override
public void run() {
// todo
}
}, set.getStartDelay());
}