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

Commit 8451542a authored by Jonathan Miranda's avatar Jonathan Miranda Committed by Android (Google) Code Review
Browse files

Merge "Ensures that the swipe up to home animation is ended prior to view...

Merge "Ensures that the swipe up to home animation is ended prior to view recycling." into ub-launcher3-rvc-dev
parents 585628e2 d08f8ac4
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -472,6 +472,7 @@ public abstract class BaseSwipeUpHandler<T extends BaseDraggingActivity, Q exten
            FloatingIconView fiv = (FloatingIconView) floatingView;
            anim.addAnimatorListener(fiv);
            fiv.setOnTargetChangeListener(anim::onTargetPositionChanged);
            fiv.setFastFinishRunnable(anim::end);
        }

        AnimatorPlaybackController homeAnim = homeAnimationFactory.createActivityAnimationToHome();
+15 −1
Original line number Diff line number Diff line
@@ -207,9 +207,23 @@ public class RectFSpringAnim {
                mRectScaleAnim.skipToEnd();
            }
        }
        mRectXAnimEnded = true;
        mRectYAnimEnded = true;
        mRectScaleAnimEnded = true;
        maybeOnEnd();
    }

    private boolean isEnded() {
        return mRectXAnimEnded && mRectYAnimEnded && mRectScaleAnimEnded;
    }

    private void onUpdate() {
        if (isEnded()) {
            // Prevent further updates from being called. This can happen between callbacks for
            // ending the x/y/scale animations.
            return;
        }

        if (!mOnUpdateListeners.isEmpty()) {
            float currentWidth = Utilities.mapRange(mCurrentScaleProgress, mStartRect.width(),
                    mTargetRect.width());
@@ -229,7 +243,7 @@ public class RectFSpringAnim {
    }

    private void maybeOnEnd() {
        if (mAnimsStarted && mRectXAnimEnded && mRectYAnimEnded && mRectScaleAnimEnded) {
        if (mAnimsStarted && isEnded()) {
            mAnimsStarted = false;
            for (Animator.AnimatorListener animatorListener : mAnimatorListeners) {
                animatorListener.onAnimationEnd(null);
+14 −1
Original line number Diff line number Diff line
@@ -19,7 +19,6 @@ import static com.android.launcher3.LauncherAnimUtils.DRAWABLE_ALPHA;
import static com.android.launcher3.Utilities.getBadge;
import static com.android.launcher3.Utilities.getFullDrawable;
import static com.android.launcher3.config.FeatureFlags.ADAPTIVE_ICON_WINDOW_ANIM;
import static com.android.launcher3.states.RotationHelper.REQUEST_LOCK;
import static com.android.launcher3.util.Executors.MODEL_EXECUTOR;

import android.animation.Animator;
@@ -100,6 +99,7 @@ public class FloatingIconView extends FrameLayout implements

    private AnimatorSet mFadeAnimatorSet;
    private ListenerView mListenerView;
    private Runnable mFastFinishRunnable;

    public FloatingIconView(Context context) {
        this(context, null);
@@ -443,9 +443,21 @@ public class FloatingIconView extends FrameLayout implements
        }
    }

    /**
     * Sets a runnable that is called after a call to {@link #fastFinish()}.
     */
    public void setFastFinishRunnable(Runnable runnable) {
        mFastFinishRunnable = runnable;
    }

    public void fastFinish() {
        if (mFastFinishRunnable != null) {
            mFastFinishRunnable.run();
            mFastFinishRunnable = null;
        }
        if (mLoadIconSignal != null) {
            mLoadIconSignal.cancel();
            mLoadIconSignal = null;
        }
        if (mEndRunnable != null) {
            mEndRunnable.run();
@@ -655,6 +667,7 @@ public class FloatingIconView extends FrameLayout implements
        sTmpObjArray[0] = null;
        mIconLoadResult = null;
        mClipIconView.recycle();
        mFastFinishRunnable = null;
    }

    private static class IconLoadResult {