Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d191a178 authored by Selim Cinek's avatar Selim Cinek
Browse files

Fixed the motion when expanding notification groups

Also fixed that a notification was expanded when the velocity
was actually heading the other way.

Bug: 24866646
Change-Id: I419eb6d35173729e8b6b8f76961b75a12e2ae93b
parent 821d6a77
Loading
Loading
Loading
Loading
+15 −3
Original line number Diff line number Diff line
@@ -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);
        }