summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java22
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/stack/StackStateAnimator.java22
2 files changed, 14 insertions, 30 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java
index eeaa6cb58681..2981a5400cf0 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java
@@ -113,7 +113,6 @@ import java.util.Collections;
import java.util.Comparator;
import java.util.HashSet;
import java.util.List;
-import java.util.Objects;
import java.util.function.BiConsumer;
/**
@@ -295,7 +294,7 @@ public class NotificationStackScrollLayout extends ViewGroup
private int[] mTempInt2 = new int[2];
private boolean mGenerateChildOrderChangedEvent;
private HashSet<Runnable> mAnimationFinishedRunnables = new HashSet<>();
- private HashSet<View> mClearOverlayViewsWhenFinished = new HashSet<>();
+ private HashSet<ExpandableView> mClearTransientViewsWhenFinished = new HashSet<>();
private HashSet<Pair<ExpandableNotificationRow, Boolean>> mHeadsUpChangeAnimations
= new HashSet<>();
private HeadsUpManagerPhone mHeadsUpManager;
@@ -2830,8 +2829,8 @@ public class NotificationStackScrollLayout extends ViewGroup
return false;
}
if (isClickedHeadsUp(child)) {
- // An animation is already running, add it to the Overlay
- mClearOverlayViewsWhenFinished.add(child);
+ // An animation is already running, add it transiently
+ mClearTransientViewsWhenFinished.add((ExpandableView) child);
return true;
}
if (mIsExpanded && mAnimationsEnabled && !isChildInInvisibleGroup(child)) {
@@ -3613,7 +3612,7 @@ public class NotificationStackScrollLayout extends ViewGroup
}
private void clearTemporaryViews() {
- // lets make sure nothing is in the overlay / transient anymore
+ // lets make sure nothing is transient anymore
clearTemporaryViewsInGroup(this);
for (int i = 0; i < getChildCount(); i++) {
ExpandableView child = (ExpandableView) getChildAt(i);
@@ -3628,9 +3627,6 @@ public class NotificationStackScrollLayout extends ViewGroup
while (viewGroup != null && viewGroup.getTransientViewCount() != 0) {
viewGroup.removeTransientView(viewGroup.getTransientView(0));
}
- if (viewGroup != null) {
- viewGroup.getOverlay().clear();
- }
}
public void onPanelTrackingStarted() {
@@ -3738,7 +3734,7 @@ public class NotificationStackScrollLayout extends ViewGroup
setAnimationRunning(false);
requestChildrenUpdate();
runAnimationFinishedRunnables();
- clearViewOverlays();
+ clearTransient();
clearHeadsUpDisappearRunning();
}
@@ -3757,11 +3753,11 @@ public class NotificationStackScrollLayout extends ViewGroup
}
}
- private void clearViewOverlays() {
- for (View view : mClearOverlayViewsWhenFinished) {
- StackStateAnimator.removeFromOverlay(view);
+ private void clearTransient() {
+ for (ExpandableView view : mClearTransientViewsWhenFinished) {
+ StackStateAnimator.removeTransientView(view);
}
- mClearOverlayViewsWhenFinished.clear();
+ mClearTransientViewsWhenFinished.clear();
}
private void runAnimationFinishedRunnables() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackStateAnimator.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackStateAnimator.java
index d01db148c366..4e8fcac66430 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackStateAnimator.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackStateAnimator.java
@@ -419,9 +419,6 @@ public class StackStateAnimator {
}, null);
} else if (event.animationType ==
NotificationStackScrollLayout.AnimationEvent.ANIMATION_TYPE_REMOVE_SWIPED_OUT) {
- // A race condition can trigger the view to be added to the overlay even though
- // it was fully swiped out. So let's remove it
- mHostLayout.getOverlay().remove(changingView);
if (Math.abs(changingView.getTranslation()) == changingView.getWidth()
&& changingView.getTransientContainer() != null) {
changingView.getTransientContainer().removeTransientView(changingView);
@@ -469,8 +466,9 @@ public class StackStateAnimator {
? ANIMATION_DELAY_HEADS_UP_CLICKED
: 0;
if (changingView.getParent() == null) {
- // This notification was actually removed, so we need to add it to the overlay
- mHostLayout.getOverlay().add(changingView);
+ // This notification was actually removed, so we need to add it transiently
+ mHostLayout.addTransientView(changingView, 0);
+ changingView.setTransientContainer(mHostLayout);
mTmpState.initFrom(changingView);
mTmpState.yTranslation = 0;
// We temporarily enable Y animations, the real filter will be combined
@@ -479,10 +477,7 @@ public class StackStateAnimator {
mAnimationProperties.delay = extraDelay + ANIMATION_DELAY_HEADS_UP;
mAnimationProperties.duration = ANIMATION_DURATION_HEADS_UP_DISAPPEAR;
mTmpState.animateTo(changingView, mAnimationProperties);
- endRunnable = () -> {
- // remove the temporary overlay
- removeFromOverlay(changingView);
- };
+ endRunnable = () -> removeTransientView(changingView);
}
float targetLocation = 0;
boolean needsAnimation = true;
@@ -517,19 +512,12 @@ public class StackStateAnimator {
}
}
- private static void removeTransientView(ExpandableView viewToRemove) {
+ public static void removeTransientView(ExpandableView viewToRemove) {
if (viewToRemove.getTransientContainer() != null) {
viewToRemove.getTransientContainer().removeTransientView(viewToRemove);
}
}
- 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);