diff options
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/ExpandHelper.java | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/ExpandHelper.java b/packages/SystemUI/src/com/android/systemui/ExpandHelper.java index 358674c809a3..aa3f6e5fe4a3 100644 --- a/packages/SystemUI/src/com/android/systemui/ExpandHelper.java +++ b/packages/SystemUI/src/com/android/systemui/ExpandHelper.java @@ -535,31 +535,43 @@ public class ExpandHelper implements Gefingerpoken { boolean nowExpanded; int naturalHeight = mScaler.getNaturalHeight(); if (wasClosed) { - nowExpanded = (force || currentHeight > mOldHeight); + nowExpanded = (force || currentHeight > mOldHeight && velocity >= 0); } else { - nowExpanded = !force && currentHeight >= mOldHeight; + nowExpanded = !force && (currentHeight >= mOldHeight || velocity > 0); } nowExpanded |= mNaturalHeight == mSmallSize; if (mScaleAnimation.isRunning()) { mScaleAnimation.cancel(); } - mCallback.setUserExpandedChild(mResizedView, nowExpanded); mCallback.expansionStateChanged(false); float targetHeight = nowExpanded ? naturalHeight : mSmallSize; if (targetHeight != currentHeight) { mScaleAnimation.setFloatValues(targetHeight); mScaleAnimation.setupStartValues(); final View scaledView = mResizedView; + final boolean expand = nowExpanded; mScaleAnimation.addListener(new AnimatorListenerAdapter() { + public boolean mCancelled; + @Override public void onAnimationEnd(Animator animation) { + if (!mCancelled) { + mCallback.setUserExpandedChild(scaledView, expand); + } mCallback.setUserLockedChild(scaledView, false); mScaleAnimation.removeListener(this); } + + @Override + public void onAnimationCancel(Animator animation) { + mCancelled = true; + } }); + velocity = nowExpanded == velocity >= 0 ? velocity : 0; mFlingAnimationUtils.apply(mScaleAnimation, currentHeight, targetHeight, velocity); mScaleAnimation.start(); } else { + mCallback.setUserExpandedChild(mResizedView, nowExpanded); mCallback.setUserLockedChild(mResizedView, false); } |