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

Commit 37a40271 authored by Selim Cinek's avatar Selim Cinek Committed by Android (Google) Code Review
Browse files

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

parents 5bcf7650 a5703187
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
@@ -1505,6 +1505,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);
@@ -1544,12 +1548,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
@@ -2188,7 +2188,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;
@@ -2200,10 +2200,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);
@@ -2885,22 +2885,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() {
@@ -3020,7 +3022,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);