2016-07-26 15 views
0

Ich möchte, dass sich ein ImageView ständig dreht und es springt, wenn der Benutzer darauf klickt.
Ich habe beide Animationen, aber ich kann die Bounce-Animation nicht starten, ohne den rotierenden zu stoppen.

Ich möchte nicht both animations at once starten.

Hier ist what I have.
AnimationSet scheint nicht das zu sein, was ich brauche, da die zweite Animation beim Klick starten muss, während der erste läuft.
Wie starte ich eine zusätzliche Animation in einer Ansicht, ohne die laufende Animation zu stoppen?

Weiß jemand, wie man das macht?

+0

Verwenden Sie zwei 'Animator's, nicht zwei' Animation's – pskink

Antwort

0

Vielen Dank pskink, it works fine! Hier ist der Arbeitscode:

private ImageView rotating_image; 
private AnimatorSet bounceAnimatorSet; 
private ObjectAnimator rotationAnimator; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    ... 
    rotating_image = (ImageView) findViewById(R.id.rotating_image); 
    if (rotating_image != null) 
     rotating_image.setOnClickListener(this); 
    setRotation(); 
    rotationAnimator.start(); 
    setBounceAnimators(); 
    ... 
} 

private void setRotation(){ 
    rotationAnimator = ObjectAnimator.ofFloat(rotating_image, "rotation",0,360); 
    rotationAnimator.setDuration(4000); 
    rotationAnimator.setRepeatCount(ValueAnimator.INFINITE); 
    rotationAnimator.setRepeatMode(ValueAnimator.RESTART); 
    rotationAnimator.setInterpolator(new LinearInterpolator()); 
} 


private void setBounceAnimators(){ 
    bounceAnimatorSet = new AnimatorSet(); 
    ObjectAnimator enlargeX = ObjectAnimator.ofFloat(rotating_image, "scaleX",1,1.5f); 
    enlargeX.setDuration(800); 
    enlargeX.setInterpolator(new LinearInterpolator()); 

    ObjectAnimator enlargeY = ObjectAnimator.ofFloat(rotating_image, "scaleY",1,1.5f); 
    enlargeY.setDuration(800); 
    enlargeY.setInterpolator(new LinearInterpolator()); 

    ObjectAnimator bounceX = ObjectAnimator.ofFloat(rotating_image, "scaleX", 1.5f, 1); 
    bounceX.setDuration(1000); 
    bounceX.setInterpolator(new BounceInterpolator()); 

    ObjectAnimator bounceY = ObjectAnimator.ofFloat(rotating_image, "scaleY", 1.5f, 1); 
    bounceY.setDuration(1000); 
    bounceY.setInterpolator(new BounceInterpolator()); 

    bounceAnimatorSet.play(enlargeX).with(enlargeY); 
    bounceAnimatorSet.play(bounceY).with(bounceX).after(enlargeY); 
}