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

Commit 8caa7879 authored by Jon Miranda's avatar Jon Miranda
Browse files

[DO NOT MERGE] Fix some visual jumps when swiping home

All caused by running the transform progress from 0 to 1 instead of
starting at whatever the progress was before ending the gesture, e.g.:
- When swiping to home without animating into an icon, the corner radius
  was set back to the window corner radius.
- Before this change, the clip didn't update throughout the animation,
  making the window slightly bigger than the floating icon view; after
  this change, the clip jumped to show the insets again before clipping
  back down during the home animation.

Partial backport of ag/Ie48f4b665a5bf3cbef76bdf7f043febe99fb84a0

Bug: 150680980
Change-Id: Ida65097f0ef7d2e11d48b84ecdd353ef89078015
parent f538393e
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -386,6 +386,10 @@ public abstract class BaseSwipeUpHandler<T extends BaseDraggingActivity, Q exten
        // rounding at the end of the animation.
        float startRadius = mClipAnimationHelper.getCurrentCornerRadius();
        float endRadius = startRect.width() / 6f;

        float startTransformProgress = mTransformParams.getProgress();
        float endTransformProgress = 1;

        // We want the window alpha to be 0 once this threshold is met, so that the
        // FolderIconView can be seen morphing into the icon shape.
        final float windowAlphaThreshold = isFloatingIconView ? 1f - SHAPE_PROGRESS_DURATION : 1f;
@@ -409,7 +413,8 @@ public abstract class BaseSwipeUpHandler<T extends BaseDraggingActivity, Q exten
            public void onUpdate(RectF currentRect, float progress) {
                homeAnim.setPlayFraction(progress);

                mTransformParams.setProgress(progress)
                mTransformParams.setProgress(
                        Utilities.mapRange(progress, startTransformProgress, endTransformProgress))
                        .setCurrentRectAndTargetAlpha(currentRect, getWindowAlpha(progress));
                if (isFloatingIconView) {
                    mTransformParams.setCornerRadius(endRadius * progress + startRadius
+4 −0
Original line number Diff line number Diff line
@@ -402,6 +402,10 @@ public class ClipAnimationHelper {
            return this;
        }

        public float getProgress() {
            return progress;
        }

        public TransformParams setCornerRadius(float cornerRadius) {
            this.cornerRadius = cornerRadius;
            return this;