From c9a7c50fac2552b96c4f80587494afcb0da78aab Mon Sep 17 00:00:00 2001 From: Jon Miranda Date: Mon, 25 Jun 2018 16:42:58 -0700 Subject: [PATCH] Tune app closing/launcher resume animation "spring" values. Bug: 109828964 Change-Id: I64252667451f511b7affdde5ffb28812876e7f4c --- quickstep/res/values/dimens.xml | 3 ++- .../LauncherAppTransitionManagerImpl.java | 18 +++++++++--------- .../android/launcher3/anim/Interpolators.java | 8 +++++--- 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/quickstep/res/values/dimens.xml b/quickstep/res/values/dimens.xml index 17d5c60baf..675b26112f 100644 --- a/quickstep/res/values/dimens.xml +++ b/quickstep/res/values/dimens.xml @@ -33,7 +33,8 @@ 50dp - -70dp + -100dp + 6.25dp 115dp 16sp diff --git a/quickstep/src/com/android/launcher3/LauncherAppTransitionManagerImpl.java b/quickstep/src/com/android/launcher3/LauncherAppTransitionManagerImpl.java index 252e3eaeee..b9ff28456e 100644 --- a/quickstep/src/com/android/launcher3/LauncherAppTransitionManagerImpl.java +++ b/quickstep/src/com/android/launcher3/LauncherAppTransitionManagerImpl.java @@ -125,13 +125,13 @@ public class LauncherAppTransitionManagerImpl extends LauncherAppTransitionManag // Progress = 0: All apps is fully pulled up, Progress = 1: All apps is fully pulled down. public static final float ALL_APPS_PROGRESS_OFF_SCREEN = 1.3059858f; - private static final int APP_CLOSE_ROW_START_DELAY_MS = 8; + private static final int APP_CLOSE_ROW_START_DELAY_MS = 9; - // The sum of [slide, oscillate, and settle] should be <= LAUNCHER_RESUME_TOTAL_DURATION. - private static final int LAUNCHER_RESUME_TOTAL_DURATION = 346; - private static final int SPRING_SLIDE_DURATION = 166; - private static final int SPRING_OSCILLATE_DURATION = 130; - private static final int SPRING_SETTLE_DURATION = 50; + private static final int SPRING_SLIDE_DURATION = 170; + private static final int SPRING_OSCILLATE_DURATION = 550; + private static final int SPRING_SETTLE_DURATION = 25; + + private static final int SPRING_ALPHA_DURATION = 100; private final Launcher mLauncher; private final DragLayer mDragLayer; @@ -173,8 +173,8 @@ public class LauncherAppTransitionManagerImpl extends LauncherAppTransitionManag Resources res = mLauncher.getResources(); mContentTransY = res.getDimensionPixelSize(R.dimen.content_trans_y); mClosingWindowTransY = res.getDimensionPixelSize(R.dimen.closing_window_trans_y); - mStartSlideTransY = res.getDimensionPixelSize(R.dimen.springs_trans_y); - mEndSlideTransY = -mStartSlideTransY * 0.1f; + mStartSlideTransY = res.getDimensionPixelSize(R.dimen.springs_start_slide_trans_y); + mEndSlideTransY = res.getDimensionPixelSize(R.dimen.springs_end_slide_trans_y); mLauncher.addOnDeviceProfileChangeListener(this); registerRemoteAnimations(); @@ -837,7 +837,7 @@ public class LauncherAppTransitionManagerImpl extends LauncherAppTransitionManag v.setAlpha(0); ObjectAnimator alpha = ObjectAnimator.ofFloat(v, View.ALPHA, 1f); alpha.setInterpolator(LINEAR); - alpha.setDuration(SPRING_SLIDE_DURATION + SPRING_OSCILLATE_DURATION); + alpha.setDuration(SPRING_ALPHA_DURATION); alpha.setStartDelay(startDelay); outAnimator.play(alpha); diff --git a/src/com/android/launcher3/anim/Interpolators.java b/src/com/android/launcher3/anim/Interpolators.java index 8a1abf412d..389da48074 100644 --- a/src/com/android/launcher3/anim/Interpolators.java +++ b/src/com/android/launcher3/anim/Interpolators.java @@ -119,18 +119,20 @@ public class Interpolators { public static final Interpolator OSCILLATE = new Interpolator() { // Used to scale the oscillations horizontally - private final float horizontalScale = 1f; + private final float horizontalScale = 4f; // Used to shift the oscillations horizontally - private final float horizontalShift = 0.5f; + private final float horizontalShift = 0.22f; // Used to scale the oscillations vertically private final float verticalScale = 1f; // Used to shift the oscillations vertically private final float verticalShift = 1f; + // Amplitude of oscillation + private final float amplitude = 0.9f; @Override public float getInterpolation(float t) { t = horizontalScale * (t + horizontalShift); - return (float) ((verticalScale * (Math.exp(-t) * Math.cos(2 * Math.PI * t))) + return (float) ((verticalScale * (Math.exp(-t) * Math.cos(amplitude * Math.PI * t))) + verticalShift); } };