How to know when Shared Element Transition ends How to know when Shared Element Transition ends android android

How to know when Shared Element Transition ends


Did you try to bind animation listener to the shared element view inside onMapSharedElements? ViewCompat.animate(view) will give you either a new or cached ViewPropertyAnimator(Compat) and then binding the animation listener should be trivial. I haven't tried it, though.

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);                        }                    });                }            }        });

What about adding Transition.Listener to the shared element transition?

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


Please try onEnterAnimationComplete() callback on your activity.

I bet this is exactly what you ere looking for.

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


Here is what I do in a 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) {        }    });