Merge "Fix notification launch animation for groups" into tm-qpr-dev am: 2821c69517
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20665670 Change-Id: Idecd1c85fb6c5e8c7591f4241961f2291a764f83 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user