2012-06-27 15 views
11

Tengo un ViewAnimator (ViewSwitcher para ser precisos) con fundido de entrada/salida animaciones asociadas a ella y dos Views que I transición entre el uso de los métodos ViewAnimator.showNext() y ViewAnimator.showPrevious().posible saltar directamente a segunda vista en ViewAnimator

Hay un requisito en mi aplicación donde a veces tengo que comenzar directamente desde el segundo View, sin mostrar una animación de desvanecimiento al pasar del primer View al segundo. ¿Alguien sabe si hay una manera directa de lograr esto sin tener que perder el tiempo con las animaciones de entrada/salida asociadas a mi ViewAnimator?

Nota: He intentado llamar ViewAnimator.setDisplayedChild(1) sino que también anima la transición.

Respuesta

16

Miré a mi alrededor y esperé una respuesta, pero supongo que no es posible. Por lo tanto, en ausencia de una solución mejor, establecer sus ViewAnimator 's de entrada/salida animaciones en nulo cuando se quiere saltar directamente a un niño en particular View de su ViewAnimator, de la siguiente manera:

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

Si alguien conoce un mejor manera - en lugar de jugar con las animaciones de entrada/salida de ViewAnimator - ¡por favor comparta!

+1

Creo que esta es la única manera, es una pena realmente. –

7

Desafortunadamente, no hay ninguna función integrada para hacer eso, pero puede agregar esta función, que hace el trabajo:

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

¡No he probado su solución, pero se ve bien! –

Cuestiones relacionadas