2012-06-17 24 views
19

Estoy intentando reproducir un conjunto de animaciones de forma secuencial utilizando el conjunto Animator. Todo funciona, excepto por la animación alfa (set1). Está cambiando de 0.25f a 1, pero no se está desvaneciendo en toda la animación y al final de la animación set1 está cambiando de 0.25 a 1 y no toma en consideración el setDuration (como resultado, no estoy obteniendo el fundido en efecto) Así que no tengo el fundido en efecto ... Cuando hago esta animación por sí misma, el fundido de efecto está ahí ... ¿Alguna idea?ObjectAnimator no se desvanece en

Estoy utilizando la maravillosa biblioteca nineoldandroids para implementar esto.

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    final ImageView image = (ImageView) findViewById(R.id.image); 
    final AnimatorSet set = new AnimatorSet(); 
    set.play(ObjectAnimator.ofFloat(image, "translationX", 0, 100).setDuration(3000)); 

    final AnimatorSet set1 = new AnimatorSet(); 
    //THIS IS THE PROBLEMATIC ANIMATION!! 
    set1.play(ObjectAnimator.ofFloat(image, "alpha", 0.25f, 1).setDuration(3000)); 

    final AnimatorSet set2 = new AnimatorSet(); 
    set2.play(ObjectAnimator.ofFloat(image, "translationX", 100, 200).setDuration(3000)); 

    final AnimatorSet set3 = new AnimatorSet(); 
    set3.playSequentially(set,set1,set2); 
    set3.start(); 
} 
+2

Comprobar el tiempo 1) el objeto que anima está visible o no –

+0

Debe hacer el 1 an 1f. – tim687

Respuesta

5

prueba esto.

ObjectAnimator.ofFloat(image, "alpha", 0.25f, 1, 1) 
30

Mientras trabajaba en 4.0+

ObjectAnimator alphaAnimation = ObjectAnimator.ofFloat(image, View.ALPHA, 0,1); 
1

Usted debe comenzar animador objeto después de la disposición se ha terminado.

final View image = findViewById(R.id.image); 
final ViewTreeObserver observer = image.getViewTreeObserver(); 
observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 
    @Override 
    public void onGlobalLayout() { 
     observer.removeOnGlobalLayoutListener(this); 
     // start animators 
    } 
}); 
Cuestiones relacionadas