Je travaille avec Shared Element Transitions
entre les activités. La transition fonctionne bien, mais je veux savoir quand la transition d'élément partagé se terminera afin de pouvoir montrer autre chose.
J'ai essayé d'utiliser onSharedElementEnd
dans SharedElementCallback
dans l'activité vers laquelle je suis en transition mais celle-ci est appelée avant le début de la transition.
y a-t-il un autre rappel que je peux écouter?
Avez-vous essayé de lier le programme d'écoute d'animation à la vue d'élément partagé dans onMapSharedElements
? ViewCompat.animate(view)
vous donnera une ViewPropertyAnimator(Compat)
nouvelle ou en cache, et lier l'écouteur d'animation devrait être trivial. Je n'ai pas essayé, cependant.
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'en est-il de l'ajout de Transition.Listener
à la transition d'élément partagé?
Transition sharedElementEnterTransition = getWindow().getSharedElementEnterTransition();
sharedElementEnterTransition.addListener(new TransitionListenerAdapter() {
@Override
public void onTransitionEnd(Android.support.transition.Transition transition) {
super.onTransitionEnd(transition);
}
});
S'il vous plaît essayez de rappeler onEnterAnimationComplete()
sur votre activité.
Je parie que c'est exactement ce que vous cherchiez.
@Override
public void onEnterAnimationComplete() {
super.onEnterAnimationComplete();
//your code
}
Voici ce que je fais dans un fragment:
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) {
}
});
Essayez d’ajouter TransitionListener au fragment A, pas à B. Et utilisez Android.support.transition.Transition
Fragment 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) {
}
})