2012-08-14 13 views
8

Ich habe einen ViewFlipper, der eine View-Animation ausführt, wenn showPrevious aufgerufen wird. Die Animation funktioniert gut. Aber das Problem ist, es beginnt mit einer Verzögerung von über 1 Sekunden. Jetzt scheint das nicht viel, aber es verzögert ernsthaft die Nutzung der App.ViewFlipper mit 'großer' Verzögerung

Meine Animationen sehen so aus;

Animation inFromLeft = new TranslateAnimation(
    Animation.RELATIVE_TO_PARENT, -1.0f, 
    Animation.RELATIVE_TO_PARENT, 0.0f, 
    Animation.RELATIVE_TO_PARENT, 0.0f, 
    Animation.RELATIVE_TO_PARENT, 0.0f); 
inFromLeft.setDuration(350); 
inFromLeft.setInterpolator(new LinearInterpolator()); 

Animation outtoRight = new TranslateAnimation(
    Animation.RELATIVE_TO_PARENT, 0.0f, 
    Animation.RELATIVE_TO_PARENT, +1.0f, 
    Animation.RELATIVE_TO_PARENT, 0.0f, 
    Animation.RELATIVE_TO_PARENT, 0.0f); 
outtoRight.setDuration(350); 
outtoRight.setInterpolator(new LinearInterpolator()); 

Ich habe die Animationen setInAnimation und setOutAnimation verwendet;

setInAnimation(inFromLeft); 
setOutAnimation(outtoRight); 

Und dann starte ich nur die Animation showPrevious

Gibt es einen Grund, warum verwenden die Animationen mit einer Verzögerung von mehr als 1 Sekunde beginnt, wird die Startzeit für die Animationen -1 und die startoffset 0.

Antwort

2

Zwei Vorschläge. Wechseln Sie zunächst, wenn möglich, zur Verwendung von ViewPager. Zweitens, wenn das erste nicht möglich ist, dann verwenden Sie XML-basierte Animationen. Es ist normalerweise ein Gewinn, Dinge aus dem Code und in Ressourcen zu schieben.

+0

Die Lösung wechselte zum ViewPager, die Animation ist nicht genau die, die ich wollte, aber die Verzögerung ist weg. Das Ändern der Animationen in XML hat nichts geändert. – Thys

1

Sind Sie sicher, dass die Verzögerung in der Animation passiert? Haben Sie versucht, eine Protokollierung einschließlich der startAnimation-Methode eines AnimationListener hinzuzufügen?

Wenn Sie sicher sind, dass die Verzögerung nach dem Start der Animation eintritt, können Sie versuchen, traceview zwischen dem Start der Animation und dem Abschluss der Animation zu verwenden (erneut mit einem AnimationsListener). Dadurch erfahren Sie, was Android in der Zwischenzeit macht.

0

Mit dem gleichen Problem wie @MrThys, aber nur auf Gingerbread-Geräten zu sehen. Keine solchen Probleme auf JellyBean-Geräten.

+0

Dies ist ein Kommentar, keine Antwort. – Joel

+0

Sie haben Recht. Aber ich konnte den eigentlichen Beitrag nicht bewerten/kommentieren und stehe vor demselben Problem. Habe XML-basierte Animationen ausprobiert und sie haben nicht geholfen. – user1102412

+0

Das rechtfertigt es nicht, es als Antwort zu veröffentlichen. Warten Sie, bis Sie genug Reputation haben oder stellen Sie eine andere Frage. – Joel