Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 96b16ed1 authored by Chet Haase's avatar Chet Haase Committed by Android (Google) Code Review
Browse files

Merge "Add custom fragment anims to be run when popping backstack"

parents aa5eb64a bc377841
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -31494,6 +31494,25 @@
<parameter name="exit" type="int">
</parameter>
</method>
<method name="setCustomAnimations"
 return="android.app.FragmentTransaction"
 abstract="true"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="enter" type="int">
</parameter>
<parameter name="exit" type="int">
</parameter>
<parameter name="popEnter" type="int">
</parameter>
<parameter name="popExit" type="int">
</parameter>
</method>
<method name="setTransition"
 return="android.app.FragmentTransaction"
 abstract="true"
+29 −1
Original line number Diff line number Diff line
@@ -43,7 +43,7 @@ final class BackStackState implements Parcelable {
            if (op.removed != null) numRemoved += op.removed.size();
            op = op.next;
        }
        mOps = new int[bse.mNumOp*5 + numRemoved];
        mOps = new int[bse.mNumOp*7 + numRemoved];

        if (!bse.mAddToBackStack) {
            throw new IllegalStateException("Not on back stack");
@@ -56,6 +56,8 @@ final class BackStackState implements Parcelable {
            mOps[pos++] = op.fragment.mIndex;
            mOps[pos++] = op.enterAnim;
            mOps[pos++] = op.exitAnim;
            mOps[pos++] = op.popEnterAnim;
            mOps[pos++] = op.popExitAnim;
            if (op.removed != null) {
                final int N = op.removed.size();
                mOps[pos++] = N;
@@ -101,6 +103,8 @@ final class BackStackState implements Parcelable {
            op.fragment = f;
            op.enterAnim = mOps[pos++];
            op.exitAnim = mOps[pos++];
            op.popEnterAnim = mOps[pos++];
            op.popExitAnim = mOps[pos++];
            final int N = mOps[pos++];
            if (N > 0) {
                op.removed = new ArrayList<Fragment>(N);
@@ -177,6 +181,8 @@ final class BackStackRecord extends FragmentTransaction implements
        Fragment fragment;
        int enterAnim;
        int exitAnim;
        int popEnterAnim;
        int popExitAnim;
        ArrayList<Fragment> removed;
    }

@@ -185,6 +191,8 @@ final class BackStackRecord extends FragmentTransaction implements
    int mNumOp;
    int mEnterAnim;
    int mExitAnim;
    int mPopEnterAnim;
    int mPopExitAnim;
    int mTransition;
    int mTransitionStyle;
    boolean mAddToBackStack;
@@ -241,6 +249,11 @@ final class BackStackRecord extends FragmentTransaction implements
                    writer.print(prefix); writer.print("enterAnim="); writer.print(op.enterAnim);
                            writer.print(" exitAnim="); writer.println(op.exitAnim);
                }
                if (op.popEnterAnim != 0 || op.popExitAnim != 0) {
                    writer.print(prefix);
                            writer.print("popEnterAnim="); writer.print(op.popEnterAnim);
                            writer.print(" popExitAnim="); writer.println(op.popExitAnim);
                }
                if (op.removed != null && op.removed.size() > 0) {
                    for (int i=0; i<op.removed.size(); i++) {
                        writer.print(innerPrefix);
@@ -299,6 +312,8 @@ final class BackStackRecord extends FragmentTransaction implements
        }
        op.enterAnim = mEnterAnim;
        op.exitAnim = mExitAnim;
        op.popEnterAnim = mPopEnterAnim;
        op.popExitAnim = mPopExitAnim;
        mNumOp++;
    }

@@ -402,8 +417,15 @@ final class BackStackRecord extends FragmentTransaction implements
    }

    public FragmentTransaction setCustomAnimations(int enter, int exit) {
        return setCustomAnimations(enter, exit, 0, 0);
    }

    public FragmentTransaction setCustomAnimations(int enter, int exit,
            int popEnter, int popExit) {
        mEnterAnim = enter;
        mExitAnim = exit;
        mPopEnterAnim = popEnter;
        mPopExitAnim = popExit;
        return this;
    }

@@ -593,6 +615,7 @@ final class BackStackRecord extends FragmentTransaction implements
            switch (op.cmd) {
                case OP_ADD: {
                    Fragment f = op.fragment;
                    f.mNextAnim = op.popExitAnim;
                    f.mImmediateActivity = null;
                    mManager.removeFragment(f,
                            FragmentManagerImpl.reverseTransit(mTransition),
@@ -600,6 +623,7 @@ final class BackStackRecord extends FragmentTransaction implements
                } break;
                case OP_REPLACE: {
                    Fragment f = op.fragment;
                    f.mNextAnim = op.popExitAnim;
                    f.mImmediateActivity = null;
                    mManager.removeFragment(f,
                            FragmentManagerImpl.reverseTransit(mTransition),
@@ -607,6 +631,7 @@ final class BackStackRecord extends FragmentTransaction implements
                    if (op.removed != null) {
                        for (int i=0; i<op.removed.size(); i++) {
                            Fragment old = op.removed.get(i);
                            old.mNextAnim = op.popEnterAnim;
                            f.mImmediateActivity = mManager.mActivity;
                            mManager.addFragment(old, false);
                        }
@@ -614,16 +639,19 @@ final class BackStackRecord extends FragmentTransaction implements
                } break;
                case OP_REMOVE: {
                    Fragment f = op.fragment;
                    f.mNextAnim = op.popEnterAnim;
                    f.mImmediateActivity = mManager.mActivity;
                    mManager.addFragment(f, false);
                } break;
                case OP_HIDE: {
                    Fragment f = op.fragment;
                    f.mNextAnim = op.popEnterAnim;
                    mManager.showFragment(f,
                            FragmentManagerImpl.reverseTransit(mTransition), mTransitionStyle);
                } break;
                case OP_SHOW: {
                    Fragment f = op.fragment;
                    f.mNextAnim = op.popExitAnim;
                    mManager.hideFragment(f,
                            FragmentManagerImpl.reverseTransit(mTransition), mTransitionStyle);
                } break;
+12 −2
Original line number Diff line number Diff line
@@ -116,10 +116,20 @@ public abstract class FragmentTransaction {

    /**
     * Set specific animation resources to run for the fragments that are
     * entering and exiting in this transaction.
     * entering and exiting in this transaction. These animations will not be
     * played when popping the back stack.
     */
    public abstract FragmentTransaction setCustomAnimations(int enter, int exit);

    /**
     * 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(int enter, int exit,
            int popEnter, int popExit);

    /**
     * Select a standard transition animation for this transaction.  May be
     * one of {@link #TRANSIT_NONE}, {@link #TRANSIT_FRAGMENT_OPEN},