2012-06-27 5 views
11

Ich habe ein ViewAnimator (ViewSwitcher genau zu sein) mit Aufblenden Animationen/aus ihm zugeordnet ist, und zwei Views die ich zwischen der Verwendung der ViewAnimator.showNext() und ViewAnimator.showPrevious() Methoden übergehen.Possible in ViewAnimator direkt zur zweiten Ansicht zu springen

Es gibt eine Anforderung in meiner App, wo ich manchmal direkt von der zweiten View starten muss, ohne eine Fade-Animation in der von der ersten View auf die zweite zu zeigen. Wer weiß, ob es einen einfachen Weg gibt, dies zu erreichen, ohne sich mit den In/Out-Animationen, die mit meinem ViewAnimator verknüpft sind, herumzuschlagen?

Hinweis: ich versucht habe ViewAnimator.setDisplayedChild(1) nennen, aber das belebt auch den Übergang.

Antwort

16

Ich schaute mich um und wartete auf eine Antwort, aber ich schätze, es ist nicht möglich. Also, in Ermangelung einer besseren Lösung, stellen Sie Ihren ViewAnimator ‚s in Animationen/out auf Null, wenn Sie gerade auf ein bestimmtes Kind springen möchten View Ihrer ViewAnimator wie folgt:

myViewAnimator.setInAnimation(null); 
myViewAnimator.setOutAnimation(null); 
myViewAnimator.setDisplayedChild(childIndex); 

Wenn jemand weiß, ein besserer Weg - anstatt mit den In/Out-Animationen von ViewAnimator zu spielen - bitte teilen!

+1

Ich denke, dies ist der einzige Weg, es ist eine Schande wirklich ist. –

7

Leider gibt es keine integrierte Funktion, das zu tun, aber Sie können diese Funktion hinzufügen, die den Job:

public static void setDisplayedChildNoAnim(ViewAnimator viewAnimator, int whichChild) { 
    Animation inAnimation = viewAnimator.getInAnimation(); 
    Animation outAnimation = viewAnimator.getOutAnimation(); 
    viewAnimator.setInAnimation(null); 
    viewAnimator.setOutAnimation(null); 
    viewAnimator.setDisplayedChild(whichChild); 
    viewAnimator.setInAnimation(inAnimation); 
    viewAnimator.setOutAnimation(outAnimation); 
} 
+0

Ich habe deine Lösung nicht ausprobiert, aber sie sieht gut aus! –

Verwandte Themen