diff options
author | Adam Cohen <adamcohen@google.com> | 2018-06-27 15:42:33 -0700 |
---|---|---|
committer | Adam Cohen <adamcohen@google.com> | 2018-06-27 15:57:12 -0700 |
commit | d63e6dff2888686b075547ded2c3ad7b236a45e3 (patch) | |
tree | ff15a0f1ca59faf242834cbd623a22eb6602af18 /src/com/android/launcher3 | |
parent | 969abca83893e8b480641a32dc4f830dc9f54489 (diff) | |
download | android_packages_apps_Trebuchet-d63e6dff2888686b075547ded2c3ad7b236a45e3.tar.gz android_packages_apps_Trebuchet-d63e6dff2888686b075547ded2c3ad7b236a45e3.tar.bz2 android_packages_apps_Trebuchet-d63e6dff2888686b075547ded2c3ad7b236a45e3.zip |
Last minute swipe up overshoot tweaks
b/109709720
Change-Id: Ie3831289a9af2ba4b03fcbb4f2cbb3f4c2431aec
Diffstat (limited to 'src/com/android/launcher3')
-rw-r--r-- | src/com/android/launcher3/anim/Interpolators.java | 12 |
1 files changed, 9 insertions, 3 deletions
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 +} |