From cded01bea9fe88962612499d6331c5739357ffeb Mon Sep 17 00:00:00 2001 From: Tony Date: Wed, 20 Mar 2019 12:45:54 -0500 Subject: [PATCH] Fix SpringObjectAnimator not sending onAnimationEnd() We only send onAnimationEnd() if both object animator and spring animator have ended. However, we also initialized mSpringEnded = false to begin with, which meant we would never send onAnimationEnd() if the spring animator was never started. Now we treat the animators as ended until they are started. Example test: 0: Enable SWIPE_HOME and QUICKSTEP_SPRINGS flags 1: Swipe up and hold on home to go to overview 2: Tap outside overview to go home 3. Swipe up to all apps 4. Swipe down Expected: animates to home, not overview. Before this change, however, it went to overview because the state manager never got onAnimationEnd() and therefore never set the last stable state to NORMAL instead of OVERVIEW. Change-Id: I7add42eedbc15b3a6a08ac69570da4edd57b5417 --- .../android/launcher3/anim/SpringObjectAnimator.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/com/android/launcher3/anim/SpringObjectAnimator.java b/src/com/android/launcher3/anim/SpringObjectAnimator.java index cc70e32edb..f74590bba3 100644 --- a/src/com/android/launcher3/anim/SpringObjectAnimator.java +++ b/src/com/android/launcher3/anim/SpringObjectAnimator.java @@ -15,6 +15,8 @@ */ package com.android.launcher3.anim; +import static com.android.launcher3.config.FeatureFlags.QUICKSTEP_SPRINGS; + import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.ObjectAnimator; @@ -32,8 +34,6 @@ import androidx.dynamicanimation.animation.FloatPropertyCompat; import androidx.dynamicanimation.animation.SpringAnimation; import androidx.dynamicanimation.animation.SpringForce; -import static com.android.launcher3.config.FeatureFlags.QUICKSTEP_SPRINGS; - /** * This animator allows for an object's property to be be controlled by an {@link ObjectAnimator} or * a {@link SpringAnimation}. It extends ValueAnimator so it can be used in an AnimatorSet. @@ -51,9 +51,9 @@ public class SpringObjectAnimator extends ValueAnim private SpringProperty mProperty; private ArrayList mListeners; - private boolean mSpringEnded = false; - private boolean mAnimatorEnded = false; - private boolean mEnded = false; + private boolean mSpringEnded = true; + private boolean mAnimatorEnded = true; + private boolean mEnded = true; private static final FloatPropertyCompat sFloatProperty = new FloatPropertyCompat("springObjectAnimator") {