studio programacion herramientas fundamentos con avanzado aplicaciones android shared-element-transition

programacion - manual de android en pdf



Cómo saber cuándo termina la transición de elementos compartidos (4)

¿Intentaste vincular el escucha de animación a la vista de elementos compartidos dentro de los onMapSharedElements elementos compartidos? ViewCompat.animate(view) le proporcionará un ViewPropertyAnimator(Compat) nuevo o en caché y, a continuación, el enlace con el oyente de la animación debe ser trivial. Aunque no lo he probado.

setEnterSharedElementCallback(new SharedElementCallback() { @Override public void onMapSharedElements(List<String> names, Map<String, View> sharedElements) { super.onMapSharedElements(names, sharedElements); View keySharedElementView = sharedElements.get("keySharedElement"); if(keySharedElementView != null){ ViewCompat.animate(keySharedElementView).setListener(new ViewPropertyAnimatorListenerAdapter(){ @Override public void onAnimationEnd(View view) { super.onAnimationEnd(view); } }); } } });

¿Qué hay de agregar Transition.Listener a la transición del elemento compartido?

Transition sharedElementEnterTransition = getWindow().getSharedElementEnterTransition(); sharedElementEnterTransition.addListener(new TransitionListenerAdapter() { @Override public void onTransitionEnd(android.support.transition.Transition transition) { super.onTransitionEnd(transition); } });

Estoy trabajando con Shared Element Transitions entre actividades. La transición está funcionando bien, pero quiero saber cuándo finaliza la transición del elemento compartido para poder mostrar otras cosas.

Intenté usar onSharedElementEnd en SharedElementCallback en la actividad a la que estoy SharedElementCallback la transición, pero se llama antes de que comience la transición.

¿Hay otra devolución de llamada que pueda escuchar?


Esto es lo que hago en un fragmento:

Transition sharedElementEnterTransition = getActivity().getWindow().getSharedElementEnterTransition(); sharedElementEnterTransition.addListener(new Transition.TransitionListener() { @Override public void onTransitionStart(Transition transition) { } @Override public void onTransitionEnd(Transition transition) { } @Override public void onTransitionCancel(Transition transition) { } @Override public void onTransitionPause(Transition transition) { } @Override public void onTransitionResume(Transition transition) { } });


Intente agregar TransitionListener en el Fragmento A, no en B. Y use android.support.transition.Transition

Fragmento A

val anim = DetailsTransition() anim.addListener(object : android.support.transition.Transition.TransitionListener { override fun onTransitionEnd(transition: android.support.transition.Transition) { } override fun onTransitionResume(transition: android.support.transition.Transition) { } override fun onTransitionPause(transition: android.support.transition.Transition) { } override fun onTransitionCancel(transition: android.support.transition.Transition) { } override fun onTransitionStart(transition: android.support.transition.Transition) { } })


Por favor, intente onEnterAnimationComplete() devolución de llamada en su actividad.

Apuesto a que esto es exactamente lo que estás buscando.

@Override public void onEnterAnimationComplete() { super.onEnterAnimationComplete(); //your code }