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
}