2012-06-17 16 views
19

Ich versuche, eine Reihe von Animationen sequentiell mit dem Animator Set zu spielen. Alles funktioniert bis auf die Alpha-Animation (set1). Es ändert sich von 0.25f zu 1 aber es verblasst nicht während der Animation und am Ende der set1 Animation ändert es sich von 0.25 zu 1 und berücksichtigt nicht die setDuration (infolgedessen bekomme ich den Einblendeffekt nicht). Also habe ich nicht den Einblendeffekt ... Wenn ich diese Animation selbst mache, ist der Einblendeffekt da ... Irgendwelche Ideen?ObjectAnimator nicht einblendbar

Ich verwende die wunderbare Bibliothek nineoldandroids, um dies zu implementieren.

@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

Wetter überprüfen 1) das animierende Objekt ist sichtbar oder nicht –

+0

Sie sollten die 1 an 1f machen. – tim687

Antwort

5

versuchen Sie dies.

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

Während der Arbeit an 4.0+

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

Sie Objekt Animator starten soll, nachdem das Layout fertig ist.

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 
    } 
}); 
Verwandte Themen