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

Commit 9269e227 authored by Chris Banes's avatar Chris Banes Committed by android-build-merger
Browse files

Fix action mode animation on recreations - framework edition

am: e65b3fbb

* commit 'e65b3fbb':
  Fix action mode animation on recreations - framework edition

Change-Id: Ic990cf5fdb98e86083ccfe54f8f3e6905aa3e375
parents a0668c74 e65b3fbb
Loading
Loading
Loading
Loading
+30 −14
Original line number Diff line number Diff line
@@ -873,6 +873,7 @@ public class WindowDecorActionBar extends ActionBar implements
            hideForActionMode();
        }

        if (shouldAnimateContextView()) {
            Animator fadeIn, fadeOut;
            if (toActionMode) {
                fadeOut = mDecorToolbar.setupAnimatorToVisibility(View.GONE,
@@ -888,9 +889,24 @@ public class WindowDecorActionBar extends ActionBar implements
            AnimatorSet set = new AnimatorSet();
            set.playSequentially(fadeOut, fadeIn);
            set.start();
        } else {
            if (toActionMode) {
                mDecorToolbar.setVisibility(View.GONE);
                mContextView.setVisibility(View.VISIBLE);
            } else {
                mDecorToolbar.setVisibility(View.VISIBLE);
                mContextView.setVisibility(View.GONE);
            }
        }
        // mTabScrollView's visibility is not affected by action mode.
    }

    private boolean shouldAnimateContextView() {
        // We only to animate the action mode in if the container view has already been laid out.
        // If it hasn't been laid out, it hasn't been drawn to screen yet.
        return mContainerView.isLaidOut();
    }

    public Context getThemedContext() {
        if (mThemedContext == null) {
            TypedValue outValue = new TypedValue();
+44 −46
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ import com.android.internal.widget.FloatingToolbar;
import java.util.List;

import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
import android.app.ActivityManager;
import android.content.Context;
@@ -1588,9 +1589,11 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind
                                mPrimaryActionModeView.getApplicationWindowToken(),
                                Gravity.TOP | Gravity.FILL_HORIZONTAL, 0, 0);
                        endOnGoingFadeAnimation();

                        if (shouldAnimatePrimaryActionModeView()) {
                            mFadeAnim = ObjectAnimator.ofFloat(mPrimaryActionModeView, View.ALPHA,
                                    0f, 1f);
                        mFadeAnim.addListener(new Animator.AnimatorListener() {
                            mFadeAnim.addListener(new AnimatorListenerAdapter() {
                                @Override
                                public void onAnimationStart(Animator animation) {
                                    mPrimaryActionModeView.setVisibility(VISIBLE);
@@ -1601,18 +1604,12 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind
                                    mPrimaryActionModeView.setAlpha(1f);
                                    mFadeAnim = null;
                                }

                            @Override
                            public void onAnimationCancel(Animator animation) {

                            }

                            @Override
                            public void onAnimationRepeat(Animator animation) {

                            }
                            });
                            mFadeAnim.start();
                        } else {
                            mPrimaryActionModeView.setAlpha(1f);
                            mPrimaryActionModeView.setVisibility(VISIBLE);
                        }
                    }
                };
            } else {
@@ -1646,8 +1643,9 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind
        if (mPrimaryActionModePopup != null) {
            post(mShowPrimaryActionModePopup);
        } else {
            if (shouldAnimatePrimaryActionModeView()) {
                mFadeAnim = ObjectAnimator.ofFloat(mPrimaryActionModeView, View.ALPHA, 0f, 1f);
            mFadeAnim.addListener(new Animator.AnimatorListener() {
                mFadeAnim.addListener(new AnimatorListenerAdapter() {
                    @Override
                    public void onAnimationStart(Animator animation) {
                        mPrimaryActionModeView.setVisibility(View.VISIBLE);
@@ -1658,23 +1656,23 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind
                        mPrimaryActionModeView.setAlpha(1f);
                        mFadeAnim = null;
                    }

                @Override
                public void onAnimationCancel(Animator animation) {

                }

                @Override
                public void onAnimationRepeat(Animator animation) {

                }
                });
                mFadeAnim.start();
            } else {
                mPrimaryActionModeView.setAlpha(1f);
                mPrimaryActionModeView.setVisibility(View.VISIBLE);
            }
        }
        mPrimaryActionModeView.sendAccessibilityEvent(
                AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
    }

    boolean shouldAnimatePrimaryActionModeView() {
        // We only to animate the action mode in if the decor has already been laid out.
        // If it hasn't been laid out, it hasn't been drawn to screen yet.
        return isLaidOut();
    }

    private ActionMode createFloatingActionMode(
            View originatingView, ActionMode.Callback2 callback) {
        if (mFloatingActionMode != null) {