In setCustomAnimations()
it takes four resource id for the animation. Not really understand them. If someone having clearer picture of it it would be appreciated if you could explain.
Let's say having fragment A add in the place holder and backstack.
FragmentTransaction ft = fm.beginTransaction(); ft.replace(R.id.holder, fragA, FragmentA.FRAGMENT_NAME); ft.addToBackStack(FragmentA.FRAGMENT_NAME); ft.setCustomAnimations(R.anim.slide_in_from_bottom, R.anim.slide_in_from_top, R.anim.slide_in_from_left, R.anim.slide_in_from_right); ft.show(frag); ft.commit();
And the replace with fragment B:
FragmentTransaction ft = fm.beginTransaction(); ft.replace(R.id.holder, fragB, FragmentB.FRAGMENT_NAME); ft.addToBackStack(FragmentB.FRAGMENT_NAME); ft.setCustomAnimations(R.anim.slide_in_from_bottom, R.anim.slide_in_from_top, R.anim.slide_in_from_left, R.anim.slide_in_from_right); ft.show(frag); ft.commit();
next time if do a popstack()
fm.popBackStackImmediate(FragmentB.FRAGMENT_NAME, FragmentManager.POP_BACK_STACK_INCLUSIVE);
Which transaction's animation it will be running from?
/** * Set specific animation resources to run for the fragments that are * entering and exiting in this transaction. The <code>popEnter</code> * and <code>popExit</code> animations will be played for enter/exit * operations specifically when popping the back stack. */ public abstract FragmentTransaction setCustomAnimations(@AnimRes int enter, @AnimRes int exit, @AnimRes int popEnter, @AnimRes int popExit);
The enterAnim and exitAnim is applied when navigating to or from the destination the "regular way", while popEnterAnim is applied to the destination when it is shown as a result of the destination "above" it being popped from the backstack.
To animate the transition between fragments, or to animate the process of showing or hiding a fragment you use the Fragment Manager to create a Fragment Transaction . Within each Fragment Transaction you can specify in and out animations that will be used for show and hide respectively (or both when replace is used).
At a high level, here's how to make a fragment transition with shared elements: Assign a unique transition name to each shared element view. Add shared element views and transition names to the FragmentTransaction . Set a shared element transition animation.
Let's start simple case:
Replace Fragment A with Fragment B (your second code snippet)
Press back button and undo the replace operation
Now to answer your question.
You don't say if the container already has a fragment or not. Let's consider both cases:
Container already had a fragment (let's call it Fragment 0) when the first operation to replace with Fragment A was called. When popping the entire stack:
Container was empty so replacing with Fragment A was essentially an add operation. When popping entire stack:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With