ObjectAnimator重复循环延迟

问题描述:

<?xml version="1.0" encoding="utf-8"?> 
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android" 
    android:propertyName="rotationX" 
    android:valueFrom="0" 
    android:valueTo="-360" 
    android:repeatCount="infinite"> 
</objectAnimator> 

这是我的目标动画XMLObjectAnimator重复循环延迟

//Animating the NormalLayout 
    final ObjectAnimator anim4 = (ObjectAnimator) //Object animator 
    AnimatorInflater.loadAnimator(this, R.animator.rotate_four); 
//And this is my java code 

我想它的循环之间添加延迟,如再次循环之间3秒。我曾尝试动画听众onRepeat,onEnd有点东西,但它没有奏效。我想循环之间有一些延迟。

任何帮助将被赞赏的最大限度。

+0

在提出问题之前,请参阅[如何提问](http://stackoverflow.com/help/asking)。只要问你想要什么,不要闲聊! –

请尝试 1.delete xml属性android:repeatCount="infinite" 2.加java代码

anim4.addListener(new AnimatorListenerAdapter(){ 
    @Override 
    public void onAnimationEnd(Animator animation) { 
     new Handler().postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       anim4.start(); 
      } 
     }, 3000); 
    } 
}); 

Helper类

public class DelayedAnimationRepeater implements Animator.AnimatorListener { 
    private long delayMillis; 

    public DelayedAnimationRepeater(long delayMillis) { 
     this.delayMillis = delayMillis; 
    } 

    @Override 
    public void onAnimationStart(Animator animator) { 

    } 

    @Override 
    public void onAnimationEnd(final Animator animator) { 
     new Handler().postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       // Start delay should only affect initial start, not repeats 
       animator.setStartDelay(0); 
       animator.start(); 
      } 
     }, delayMillis); 
    } 

    @Override 
    public void onAnimationCancel(Animator animator) { 

    } 

    @Override 
    public void onAnimationRepeat(Animator animator) { 

    } 
} 

使用

anim4.addListener(new DelayedAnimationRepeater(3000));