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

Commit efaa2877 authored by Selim Cinek's avatar Selim Cinek Committed by android-build-merger
Browse files

Merge "Fixed the remove animations for notification children" into nyc-dev am:...

Merge "Fixed the remove animations for notification children" into nyc-dev am: 37a40271 am: 89374b95
am: caa78d7d

* commit 'caa78d7d':
  Fixed the remove animations for notification children

Change-Id: Ic7cad1b23aa7085ad7ef4faa5016d4c5c89b15fa
parents 7bc65d3e caa78d7d
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -329,7 +329,9 @@ public class ExpandableNotificationRow extends ActivatableNotificationView {
        if (mChildrenContainer != null) {
            mChildrenContainer.removeNotification(row);
        }
        if (!row.isRemoved()) {
            mHeaderUtil.restoreNotificationHeader(row);
        }
        onChildrenCountChanged();
        row.setIsChildInGroup(false, null);
    }
@@ -644,7 +646,9 @@ public class ExpandableNotificationRow extends ActivatableNotificationView {
                continue;
            }
            mChildrenContainer.removeNotification(row);
            if (!row.isRemoved()) {
                mHeaderUtil.restoreNotificationHeader(row);
            }
            row.setIsChildInGroup(false, null);
        }
        onChildrenCountChanged();
@@ -1338,6 +1342,9 @@ public class ExpandableNotificationRow extends ActivatableNotificationView {

    @Override
    protected View getContentView() {
        if (mIsSummaryWithChildren) {
            return mChildrenContainer;
        }
        return getShowingLayout();
    }

+6 −1
Original line number Diff line number Diff line
@@ -1506,6 +1506,10 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
            mHeadsUpEntriesToRemoveOnSwitch.add(mHeadsUpManager.getEntry(key));
            return;
        }
        Entry entry = mNotificationData.get(key);
        if (entry != null && entry.row != null) {
            entry.row.setRemoved(true);
        }
        // Let's remove the children if this was a summary
        handleGroupSummaryRemoved(key, ranking);
        StatusBarNotification old = removeNotificationViews(key, ranking);
@@ -1545,12 +1549,13 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
                // always cancelled. We only remove them if they were dismissed by the user.
                return;
            }
            entry.row.setRemoved(true);
            List<ExpandableNotificationRow> notificationChildren =
                    entry.row.getNotificationChildren();
            ArrayList<ExpandableNotificationRow> toRemove = new ArrayList<>(notificationChildren);
            for (int i = 0; i < toRemove.size(); i++) {
                toRemove.get(i).setKeepInParent(true);
                // we need to set this state earlier as otherwise we might generate some weird
                // animations
                toRemove.get(i).setRemoved(true);
            }
            for (int i = 0; i < toRemove.size(); i++) {
+11 −9
Original line number Diff line number Diff line
@@ -2186,7 +2186,7 @@ public class NotificationStackScrollLayout extends ViewGroup
        }
    }

    private void onViewRemovedInternal(View child, ViewGroup transientContainer) {
    private void onViewRemovedInternal(View child, ViewGroup container) {
        if (mChangePositionInProgress) {
            // This is only a position change, don't do anything special
            return;
@@ -2198,10 +2198,10 @@ public class NotificationStackScrollLayout extends ViewGroup
        boolean animationGenerated = generateRemoveAnimation(child);
        if (animationGenerated) {
            if (!mSwipedOutViews.contains(child)) {
                getOverlay().add(child);
                container.getOverlay().add(child);
            } else if (Math.abs(expandableView.getTranslation()) != expandableView.getWidth()) {
                transientContainer.addTransientView(child, 0);
                expandableView.setTransientContainer(transientContainer);
                container.addTransientView(child, 0);
                expandableView.setTransientContainer(container);
            }
        } else {
            mSwipedOutViews.remove(child);
@@ -2887,22 +2887,24 @@ public class NotificationStackScrollLayout extends ViewGroup
            mPhoneStatusBar.resetUserExpandedStates();

            // lets make sure nothing is in the overlay / transient anymore
            clearTransientViews(this);
            clearTemporaryViews(this);
            for (int i = 0; i < getChildCount(); i++) {
                ExpandableView child = (ExpandableView) getChildAt(i);
                if (child instanceof ExpandableNotificationRow) {
                    ExpandableNotificationRow row = (ExpandableNotificationRow) child;
                    clearTransientViews(row.getChildrenContainer());
                    clearTemporaryViews(row.getChildrenContainer());
                }
            }
            getOverlay().clear();
        }
    }

    private void clearTransientViews(ViewGroup viewGroup) {
    private void clearTemporaryViews(ViewGroup viewGroup) {
        while (viewGroup != null && viewGroup.getTransientViewCount() != 0) {
            viewGroup.removeTransientView(viewGroup.getTransientView(0));
        }
        if (viewGroup != null) {
            viewGroup.getOverlay().clear();
        }
    }

    public void onPanelTrackingStarted() {
@@ -3022,7 +3024,7 @@ public class NotificationStackScrollLayout extends ViewGroup

    private void clearViewOverlays() {
        for (View view : mClearOverlayViewsWhenFinished) {
            getOverlay().remove(view);
            StackStateAnimator.removeFromOverlay(view);
        }
    }

+11 −3
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.animation.ObjectAnimator;
import android.animation.PropertyValuesHolder;
import android.animation.ValueAnimator;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Interpolator;

import com.android.systemui.Interpolators;
@@ -797,7 +798,7 @@ public class StackStateAnimator {
    private void onAnimationFinished() {
        mHostLayout.onChildAnimationFinished();
        for (View v : mChildrenToClearFromOverlay) {
            mHostLayout.getOverlay().remove(v);
            removeFromOverlay(v);
        }
        mChildrenToClearFromOverlay.clear();
    }
@@ -829,7 +830,7 @@ public class StackStateAnimator {
            } else if (event.animationType ==
                    NotificationStackScrollLayout.AnimationEvent.ANIMATION_TYPE_REMOVE) {
                if (changingView.getVisibility() == View.GONE) {
                    mHostLayout.getOverlay().remove(changingView);
                    removeFromOverlay(changingView);
                    continue;
                }

@@ -854,7 +855,7 @@ public class StackStateAnimator {
                    @Override
                    public void run() {
                        // remove the temporary overlay
                        mHostLayout.getOverlay().remove(changingView);
                        removeFromOverlay(changingView);
                    }
                });
            } else if (event.animationType ==
@@ -909,6 +910,13 @@ public class StackStateAnimator {
        }
    }

    public static void removeFromOverlay(View changingView) {
        ViewGroup parent = (ViewGroup) changingView.getParent();
        if (parent != null) {
            parent.removeView(changingView);
        }
    }

    public void animateOverScrollToAmount(float targetAmount, final boolean onTop,
            final boolean isRubberbanded) {
        final float startOverScrollAmount = mHostLayout.getCurrentOverScrollAmount(onTop);