2012-06-27 8 views
11

Ho una ViewAnimator (ViewSwitcher per la precisione) con fade in/out animazioni associate ad esso e due Views quale transizione tra base alle ViewAnimator.showNext() e ViewAnimator.showPrevious() metodi.possibile saltare direttamente alla seconda vista in ViewAnimator

Nella mia app c'è un requisito in cui a volte ho bisogno di iniziare direttamente dal secondo View, senza mostrare un'animazione di dissolvenza nel passaggio dal primo View al secondo. Qualcuno sa se c'è un modo semplice per realizzare questo senza dover scherzare con le animazioni in/out associate al mio ViewAnimator?

Nota: Ho provato a chiamare ViewAnimator.setDisplayedChild(1) ma che anima anche la transizione.

risposta

16

Mi sono guardato intorno e ho aspettato una risposta, ma suppongo che non sia possibile. Così, in assenza di una soluzione migliore, impostare le ViewAnimator 's in/out animazioni a null quando si desidera passare direttamente a un bambino particolare View della vostra ViewAnimator, come segue:

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

Se qualcuno conosce un modo migliore - piuttosto che giocare con le animazioni in/out dello ViewAnimator - per favore condividi!

+1

Credo che questo sia l'unico modo, si tratta di un peccato davvero. –

7

Purtroppo, non v'è alcuna funzione incorporata per fare questo, ma è possibile aggiungere questa funzione, che fa il lavoro:

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

Non ho provato la tua soluzione ma sembra carina! –

Problemi correlati