Loading packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java +9 −2 Original line number Diff line number Diff line Loading @@ -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); } Loading Loading @@ -644,7 +646,9 @@ public class ExpandableNotificationRow extends ActivatableNotificationView { continue; } mChildrenContainer.removeNotification(row); if (!row.isRemoved()) { mHeaderUtil.restoreNotificationHeader(row); } row.setIsChildInGroup(false, null); } onChildrenCountChanged(); Loading Loading @@ -1338,6 +1342,9 @@ public class ExpandableNotificationRow extends ActivatableNotificationView { @Override protected View getContentView() { if (mIsSummaryWithChildren) { return mChildrenContainer; } return getShowingLayout(); } Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +6 −1 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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++) { Loading packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java +11 −9 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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); Loading Loading @@ -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() { Loading Loading @@ -3020,7 +3022,7 @@ public class NotificationStackScrollLayout extends ViewGroup private void clearViewOverlays() { for (View view : mClearOverlayViewsWhenFinished) { getOverlay().remove(view); StackStateAnimator.removeFromOverlay(view); } } Loading packages/SystemUI/src/com/android/systemui/statusbar/stack/StackStateAnimator.java +11 −3 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -797,7 +798,7 @@ public class StackStateAnimator { private void onAnimationFinished() { mHostLayout.onChildAnimationFinished(); for (View v : mChildrenToClearFromOverlay) { mHostLayout.getOverlay().remove(v); removeFromOverlay(v); } mChildrenToClearFromOverlay.clear(); } Loading Loading @@ -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; } Loading @@ -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 == Loading Loading @@ -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); Loading Loading
packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java +9 −2 Original line number Diff line number Diff line Loading @@ -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); } Loading Loading @@ -644,7 +646,9 @@ public class ExpandableNotificationRow extends ActivatableNotificationView { continue; } mChildrenContainer.removeNotification(row); if (!row.isRemoved()) { mHeaderUtil.restoreNotificationHeader(row); } row.setIsChildInGroup(false, null); } onChildrenCountChanged(); Loading Loading @@ -1338,6 +1342,9 @@ public class ExpandableNotificationRow extends ActivatableNotificationView { @Override protected View getContentView() { if (mIsSummaryWithChildren) { return mChildrenContainer; } return getShowingLayout(); } Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +6 −1 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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++) { Loading
packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java +11 −9 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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); Loading Loading @@ -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() { Loading Loading @@ -3020,7 +3022,7 @@ public class NotificationStackScrollLayout extends ViewGroup private void clearViewOverlays() { for (View view : mClearOverlayViewsWhenFinished) { getOverlay().remove(view); StackStateAnimator.removeFromOverlay(view); } } Loading
packages/SystemUI/src/com/android/systemui/statusbar/stack/StackStateAnimator.java +11 −3 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -797,7 +798,7 @@ public class StackStateAnimator { private void onAnimationFinished() { mHostLayout.onChildAnimationFinished(); for (View v : mChildrenToClearFromOverlay) { mHostLayout.getOverlay().remove(v); removeFromOverlay(v); } mChildrenToClearFromOverlay.clear(); } Loading Loading @@ -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; } Loading @@ -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 == Loading Loading @@ -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); Loading