summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher3
diff options
context:
space:
mode:
authorAdam Cohen <adamcohen@google.com>2018-06-27 15:42:33 -0700
committerAdam Cohen <adamcohen@google.com>2018-06-27 15:57:12 -0700
commitd63e6dff2888686b075547ded2c3ad7b236a45e3 (patch)
treeff15a0f1ca59faf242834cbd623a22eb6602af18 /src/com/android/launcher3
parent969abca83893e8b480641a32dc4f830dc9f54489 (diff)
downloadandroid_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.java12
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
+}