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

Commit a1ea2c84 authored by Adam Powell's avatar Adam Powell Committed by Android (Google) Code Review
Browse files

Merge "Fix bug 3345948 - ActionBar.show()/hide() shouldn't animate if called before first layout"

parents cbefb805 50efbed6
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -1073,6 +1073,7 @@ public class Activity extends ContextThemeWrapper
    protected void onPostResume() {
        final Window win = getWindow();
        if (win != null) win.makeActive();
        if (mActionBar != null) mActionBar.setShowHideAnimationEnabled(true);
        mCalled = true;
    }

@@ -1325,6 +1326,7 @@ public class Activity extends ContextThemeWrapper
     * @see #onDestroy
     */
    protected void onStop() {
        if (mActionBar != null) mActionBar.setShowHideAnimationEnabled(false);
        mCalled = true;
    }

+2 −0
Original line number Diff line number Diff line
@@ -352,12 +352,14 @@ public class Dialog implements DialogInterface, Window.Callback,
     * Called when the dialog is starting.
     */
    protected void onStart() {
        if (mActionBar != null) mActionBar.setShowHideAnimationEnabled(true);
    }

    /**
     * Called to tell you that you're stopping.
     */
    protected void onStop() {
        if (mActionBar != null) mActionBar.setShowHideAnimationEnabled(false);
    }

    private static final String DIALOG_SHOWING_TAG = "android:dialogShowing";
+49 −23
Original line number Diff line number Diff line
@@ -92,6 +92,7 @@ public class ActionBarImpl extends ActionBar {
    final Handler mHandler = new Handler();

    private Animator mCurrentAnim;
    private boolean mShowHideAnimationEnabled;

    private static final TimeInterpolator sFadeOutInterpolator = new DecelerateInterpolator();

@@ -217,6 +218,20 @@ public class ActionBarImpl extends ActionBar {
                CONTEXT_DISPLAY_NORMAL : CONTEXT_DISPLAY_SPLIT;
    }

    /**
     * Enables or disables animation between show/hide states.
     * If animation is disabled using this method, animations in progress
     * will be finished.
     *
     * @param enabled true to animate, false to not animate.
     */
    public void setShowHideAnimationEnabled(boolean enabled) {
        mShowHideAnimationEnabled = enabled;
        if (!enabled && mCurrentAnim != null) {
            mCurrentAnim.end();
        }
    }

    public void addOnMenuVisibilityListener(OnMenuVisibilityListener listener) {
        mMenuVisibilityListeners.add(listener);
    }
@@ -361,6 +376,7 @@ public class ActionBarImpl extends ActionBar {
                mLowerContextView.setVisibility(View.VISIBLE);
            }
            mActionMode = mode;
            show();
            return mode;
        }
        return null;
@@ -487,6 +503,8 @@ public class ActionBarImpl extends ActionBar {
            return;
        }
        mContainerView.setVisibility(View.VISIBLE);

        if (mShowHideAnimationEnabled) {
            mContainerView.setAlpha(0);
            AnimatorSet anim = new AnimatorSet();
            AnimatorSet.Builder b = anim.play(ObjectAnimator.ofFloat(mContainerView, "alpha", 1));
@@ -499,6 +517,9 @@ public class ActionBarImpl extends ActionBar {
            anim.addListener(mShowListener);
            mCurrentAnim = anim;
            anim.start();
        } else {
            mShowListener.onAnimationEnd(null);
        }
    }

    @Override
@@ -509,6 +530,8 @@ public class ActionBarImpl extends ActionBar {
        if (mContainerView.getVisibility() == View.GONE) {
            return;
        }

        if (mShowHideAnimationEnabled) {
            mContainerView.setAlpha(1);
            AnimatorSet anim = new AnimatorSet();
            AnimatorSet.Builder b = anim.play(ObjectAnimator.ofFloat(mContainerView, "alpha", 0));
@@ -521,6 +544,9 @@ public class ActionBarImpl extends ActionBar {
            anim.addListener(mHideListener);
            mCurrentAnim = anim;
            anim.start();
        } else {
            mHideListener.onAnimationEnd(null);
        }
    }

    public boolean isShowing() {