summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationChildrenContainer.java29
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java7
3 files changed, 26 insertions, 14 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java
index a487af1998fc..44a231d55c08 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java
@@ -976,10 +976,10 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
/**
* Updates states of all children.
*/
- public void updateChildrenStates(AmbientState ambientState) {
+ public void updateChildrenStates() {
if (mIsSummaryWithChildren) {
ExpandableViewState parentState = getViewState();
- mChildrenContainer.updateState(parentState, ambientState);
+ mChildrenContainer.updateState(parentState);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationChildrenContainer.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationChildrenContainer.java
index 4a8e2dbb5334..4d1451e3a6e2 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationChildrenContainer.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationChildrenContainer.java
@@ -616,9 +616,8 @@ public class NotificationChildrenContainer extends ViewGroup
* Update the state of all its children based on a linear layout algorithm.
*
* @param parentState the state of the parent
- * @param ambientState the ambient state containing ambient information
*/
- public void updateState(ExpandableViewState parentState, AmbientState ambientState) {
+ public void updateState(ExpandableViewState parentState) {
int childCount = mAttachedChildren.size();
int yPosition = mNotificationHeaderMargin + mCurrentHeaderTranslation;
boolean firstChild = true;
@@ -661,9 +660,17 @@ public class NotificationChildrenContainer extends ViewGroup
childState.height = intrinsicHeight;
childState.setYTranslation(yPosition + launchTransitionCompensation);
childState.hidden = false;
- // When the group is expanded, the children cast the shadows rather than the parent
- // so use the parent's elevation here.
- if (childrenExpandedAndNotAnimating && mEnableShadowOnChildNotifications) {
+ if (child.isExpandAnimationRunning() || mContainingNotification.hasExpandingChild()) {
+ // Not modifying translationZ during launch animation. The translationZ of the
+ // expanding child is handled inside ExpandableNotificationRow and the translationZ
+ // of the other children inside the group should remain unchanged. In particular,
+ // they should not take over the translationZ of the parent, since the parent has
+ // a positive translationZ set only for the expanding child to be drawn above other
+ // notifications.
+ childState.setZTranslation(child.getTranslationZ());
+ } else if (childrenExpandedAndNotAnimating && mEnableShadowOnChildNotifications) {
+ // When the group is expanded, the children cast the shadows rather than the parent
+ // so use the parent's elevation here.
childState.setZTranslation(parentState.getZTranslation());
} else {
childState.setZTranslation(0);
@@ -716,9 +723,15 @@ public class NotificationChildrenContainer extends ViewGroup
mHeaderViewState = new ViewState();
}
mHeaderViewState.initFrom(mNotificationHeader);
- mHeaderViewState.setZTranslation(childrenExpandedAndNotAnimating
- ? parentState.getZTranslation()
- : 0);
+
+ if (mContainingNotification.hasExpandingChild()) {
+ // Not modifying translationZ during expand animation.
+ mHeaderViewState.setZTranslation(mNotificationHeader.getTranslationZ());
+ } else if (childrenExpandedAndNotAnimating) {
+ mHeaderViewState.setZTranslation(parentState.getZTranslation());
+ } else {
+ mHeaderViewState.setZTranslation(0);
+ }
mHeaderViewState.setYTranslation(mCurrentHeaderTranslation);
mHeaderViewState.setAlpha(mHeaderVisibleAmount);
// The hiding is done automatically by the alpha, otherwise we'll pick it up again
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java
index aff7b4c6c515..3170f34bcebd 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java
@@ -128,7 +128,7 @@ public class StackScrollAlgorithm {
updateSpeedBumpState(algorithmState, speedBumpIndex);
updateShelfState(algorithmState, ambientState);
updateAlphaState(algorithmState, ambientState);
- getNotificationChildrenStates(algorithmState, ambientState);
+ getNotificationChildrenStates(algorithmState);
}
private void updateAlphaState(StackScrollAlgorithmState algorithmState,
@@ -231,14 +231,13 @@ public class StackScrollAlgorithm {
}
}
- private void getNotificationChildrenStates(StackScrollAlgorithmState algorithmState,
- AmbientState ambientState) {
+ private void getNotificationChildrenStates(StackScrollAlgorithmState algorithmState) {
int childCount = algorithmState.visibleChildren.size();
for (int i = 0; i < childCount; i++) {
ExpandableView v = algorithmState.visibleChildren.get(i);
if (v instanceof ExpandableNotificationRow) {
ExpandableNotificationRow row = (ExpandableNotificationRow) v;
- row.updateChildrenStates(ambientState);
+ row.updateChildrenStates();
}
}
}