diff options
author | Jon Miranda <jonmiranda@google.com> | 2018-06-21 09:20:04 -0700 |
---|---|---|
committer | Jon Miranda <jonmiranda@google.com> | 2018-06-21 09:34:25 -0700 |
commit | b83c71aa24983e1a8b7910cad32cb49133891e55 (patch) | |
tree | 90a4fc36b5bd73a29af14cf53cc0c9d0c0e24b2c /quickstep | |
parent | 48010091f45e01c0d05f7266c9ef4b1d99704a29 (diff) | |
download | android_packages_apps_Trebuchet-b83c71aa24983e1a8b7910cad32cb49133891e55.tar.gz android_packages_apps_Trebuchet-b83c71aa24983e1a8b7910cad32cb49133891e55.tar.bz2 android_packages_apps_Trebuchet-b83c71aa24983e1a8b7910cad32cb49133891e55.zip |
Refactor "spring" code into one method.
+ Increases the alpha duration of the staggered spring views.
Bug: 109828964
Change-Id: Id7dff9718dfcd5ca5653fdde36d3792201f483b5
Diffstat (limited to 'quickstep')
-rw-r--r-- | quickstep/src/com/android/launcher3/LauncherAppTransitionManagerImpl.java | 62 |
1 files changed, 31 insertions, 31 deletions
diff --git a/quickstep/src/com/android/launcher3/LauncherAppTransitionManagerImpl.java b/quickstep/src/com/android/launcher3/LauncherAppTransitionManagerImpl.java index 4108cd290..252e3eaee 100644 --- a/quickstep/src/com/android/launcher3/LauncherAppTransitionManagerImpl.java +++ b/quickstep/src/com/android/launcher3/LauncherAppTransitionManagerImpl.java @@ -57,6 +57,7 @@ import android.os.CancellationSignal; import android.os.Handler; import android.os.Looper; import android.util.Pair; +import android.util.Property; import android.view.View; import android.view.ViewGroup; @@ -804,25 +805,9 @@ public class LauncherAppTransitionManagerImpl extends LauncherAppTransitionManag float shiftRange = allAppsController.getShiftRange(); float slideStart = shiftRange / (shiftRange - mStartSlideTransY); float oscillateStart = shiftRange / (shiftRange - mEndSlideTransY); - // Ensures a clean hand-off between slide and oscillate. - float slideEnd = Utilities.mapToRange(0, 0, 1f, oscillateStart, 1, OSCILLATE); - allAppsController.setProgress(slideStart); - Animator slideIn = ObjectAnimator.ofFloat(allAppsController, ALL_APPS_PROGRESS, - slideStart, slideEnd); - slideIn.setDuration(SPRING_SLIDE_DURATION); - slideIn.setInterpolator(DEACCEL); - - Animator oscillate = ObjectAnimator.ofFloat(allAppsController, ALL_APPS_PROGRESS, - oscillateStart, 1f); - oscillate.setDuration(SPRING_OSCILLATE_DURATION); - oscillate.setInterpolator(OSCILLATE); - - Animator settle = ObjectAnimator.ofFloat(allAppsController, ALL_APPS_PROGRESS, 1f); - settle.setDuration(SPRING_SETTLE_DURATION); - settle.setInterpolator(LINEAR); - - workspaceAnimator.playSequentially(slideIn, oscillate, settle); + buildSpringAnimation(workspaceAnimator, allAppsController, ALL_APPS_PROGRESS, + 0 /* startDelay */, slideStart, oscillateStart, 1f /* finalPosition */); } mDragLayer.getScrim().hideSysUiScrim(true); @@ -852,35 +837,50 @@ public class LauncherAppTransitionManagerImpl extends LauncherAppTransitionManag v.setAlpha(0); ObjectAnimator alpha = ObjectAnimator.ofFloat(v, View.ALPHA, 1f); alpha.setInterpolator(LINEAR); - alpha.setDuration(SPRING_SLIDE_DURATION); + alpha.setDuration(SPRING_SLIDE_DURATION + SPRING_OSCILLATE_DURATION); alpha.setStartDelay(startDelay); outAnimator.play(alpha); + buildSpringAnimation(outAnimator, v, TRANSLATION_Y, startDelay, mStartSlideTransY, + mEndSlideTransY, 0f /* finalPosition */); + + outAnimator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + v.setAlpha(1f); + v.setTranslationY(0); + } + }); + } + + /** + * Spring animations consists of three sequential animators: a slide, an oscillation, and + * a settle. + */ + private <T> void buildSpringAnimation(AnimatorSet outAnimator, T objectToSpring, + Property<T, Float> property, long startDelay, float slideStart, float oscillateStart, + float finalPosition) { // Ensures a clean hand-off between slide and oscillate. - float slideEnd = Utilities.mapToRange(0, 0, 1f, mEndSlideTransY, 0, OSCILLATE); - v.setTranslationY(mStartSlideTransY); - ObjectAnimator slideIn = ObjectAnimator.ofFloat(v, TRANSLATION_Y, mStartSlideTransY, + float slideEnd = Utilities.mapToRange(0, 0, 1f, oscillateStart, finalPosition, OSCILLATE); + + property.set(objectToSpring, slideStart); + + ObjectAnimator slideIn = ObjectAnimator.ofFloat(objectToSpring, property, slideStart, slideEnd); slideIn.setInterpolator(DEACCEL); slideIn.setStartDelay(startDelay); slideIn.setDuration(SPRING_SLIDE_DURATION); - ObjectAnimator oscillate = ObjectAnimator.ofFloat(v, TRANSLATION_Y, mEndSlideTransY, 0); + ObjectAnimator oscillate = ObjectAnimator.ofFloat(objectToSpring, property, oscillateStart, + finalPosition); oscillate.setInterpolator(OSCILLATE); oscillate.setDuration(SPRING_OSCILLATE_DURATION); - ObjectAnimator settle = ObjectAnimator.ofFloat(v, TRANSLATION_Y, 0); + ObjectAnimator settle = ObjectAnimator.ofFloat(objectToSpring, property, finalPosition); settle.setInterpolator(LINEAR); settle.setDuration(SPRING_SETTLE_DURATION); outAnimator.playSequentially(slideIn, oscillate, settle); - outAnimator.addListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - v.setAlpha(1f); - v.setTranslationY(0); - } - }); } private void resetContentView() { |