diff options
-rw-r--r-- | quickstep/src/com/android/quickstep/LongSwipeHelper.java | 3 | ||||
-rw-r--r-- | src/com/android/launcher3/anim/Interpolators.java | 12 |
2 files changed, 10 insertions, 5 deletions
diff --git a/quickstep/src/com/android/quickstep/LongSwipeHelper.java b/quickstep/src/com/android/quickstep/LongSwipeHelper.java index 491cbb3d2..6b66ec8db 100644 --- a/quickstep/src/com/android/quickstep/LongSwipeHelper.java +++ b/quickstep/src/com/android/quickstep/LongSwipeHelper.java @@ -118,8 +118,7 @@ public class LongSwipeHelper { if (blockedFling && !toAllApps) { Interpolators.OvershootParams overshoot = new OvershootParams(currentFraction, currentFraction, endProgress, velocityPxPerMs, (int) mMaxSwipeDistance); - duration = (overshoot.duration + duration) - * LauncherAnimUtils.blockedFlingDurationFactor(0); + duration = (overshoot.duration + duration); duration = Utilities.boundToRange(duration, MIN_OVERSHOOT_DURATION, MAX_SWIPE_DURATION); interpolator = overshoot.interpolator; diff --git a/src/com/android/launcher3/anim/Interpolators.java b/src/com/android/launcher3/anim/Interpolators.java index 3e01f7262..675e26de0 100644 --- a/src/com/android/launcher3/anim/Interpolators.java +++ b/src/com/android/launcher3/anim/Interpolators.java @@ -57,6 +57,9 @@ public class Interpolators { public static final Interpolator EXAGGERATED_EASE; + private static final int MIN_SETTLE_DURATION = 200; + private static final float OVERSHOOT_FACTOR = 0.9f; + static { Path exaggeratedEase = new Path(); exaggeratedEase.moveTo(0, 0); @@ -186,7 +189,8 @@ public class Interpolators { start = startProgress; int startPx = (int) (start * totalDistancePx); // Overshoot by about half a frame. - float overshootBy = velocityPxPerMs * SINGLE_FRAME_MS / totalDistancePx / 2; + float overshootBy = OVERSHOOT_FACTOR * velocityPxPerMs * + SINGLE_FRAME_MS / totalDistancePx / 2; overshootBy = Utilities.boundToRange(overshootBy, 0.02f, 0.15f); end = overshootPastProgress + overshootBy; int endPx = (int) (end * totalDistancePx); @@ -211,7 +215,9 @@ public class Interpolators { // Above formula assumes constant acceleration. Since we use ACCEL_DEACCEL, we actually // have acceleration to halfway then deceleration the rest. So the formula becomes: // t = sqrt(d/a) * 2 (half the distance for accel, half for deaccel) - long settleDuration = (long) Math.sqrt(settleDistancePx / decelerationPxPerMs) * 2; + long settleDuration = (long) Math.sqrt(settleDistancePx / decelerationPxPerMs) * 4; + + settleDuration = Math.max(MIN_SETTLE_DURATION, settleDuration); // How much of the animation to devote to playing the overshoot (the rest is for settle). float overshootFraction = (float) duration / (duration + settleDuration); duration += settleDuration; @@ -228,4 +234,4 @@ public class Interpolators { : settle.getInterpolation(t); } } -}
\ No newline at end of file +} |