How To Know When Enter Transition Ended On Fragment?
I have a fragment, which shows enter animation, I set transition by this.setEnterTransition(transition); After that I want to show another animation. But I need to know when trans
Solution 1:
transition.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) {}
});
this.setEnterTransition(transition);
Solution 2:
If you have the following setup:
FragmentA calls FragmentB with a SharedElementEnterTransition like
privatefinalTransitionSettransition=newTransitionSet()
.addTransition(newChangeBounds());
//...FragmentTransactiontransaction= getSupportFragmentManager().beginTransaction()
.replace(R.id.container, fragment, fragment.getClass().getSimpleName());
transaction.addSharedElement(view, view.getTransitionName());
fragment.setSharedElementEnterTransition(transition);
fragment.setSharedElementReturnTransition(transition);
transaction.commit();
to listen for the end of the SharedElementTransition in your second Fragment. Then you have to get the SharedElementEnterTransition in your FragmentB's onAttach like:
@OverridepublicvoidonAttach(Context context) {
super.onAttach(context);
TransitionSet transitionSet = (TransitionSet) getSharedElementEnterTransition();
if (transitionSet != null) {
transitionSet.addListener(newTransition.TransitionListener() {
@OverridepublicvoidonTransitionEnd(@NonNull Transition transition) {
// remove listener as otherwise there are side-effects
transition.removeListener(this);
// do something here
}
@OverridepublicvoidonTransitionStart(@NonNull Transition transition) {}
@OverridepublicvoidonTransitionCancel(@NonNull Transition transition) {}
@OverridepublicvoidonTransitionPause(@NonNull Transition transition) {}
@OverridepublicvoidonTransitionResume(@NonNull Transition transition) {}
});
}
}
As pointed out in the comments of this answer there is a bug when not setting the listener in onAttach().
Post a Comment for "How To Know When Enter Transition Ended On Fragment?"