Merge "[Notif] Disable animations as screen is powering off" into pi-dev

This commit is contained in:
TreeHugger Robot
2018-04-06 00:21:30 +00:00
committed by Android (Google) Code Review

View File

@@ -3023,6 +3023,11 @@ public class NotificationStackScrollLayout extends ViewGroup
public void setAnimationsEnabled(boolean animationsEnabled) { public void setAnimationsEnabled(boolean animationsEnabled) {
mAnimationsEnabled = animationsEnabled; mAnimationsEnabled = animationsEnabled;
updateNotificationAnimationStates(); updateNotificationAnimationStates();
if (!animationsEnabled) {
mSwipedOutViews.clear();
mChildrenToRemoveAnimated.clear();
clearTemporaryViewsInGroup(this);
}
} }
private void updateNotificationAnimationStates() { private void updateNotificationAnimationStates() {
@@ -3090,6 +3095,21 @@ public class NotificationStackScrollLayout extends ViewGroup
@Override @Override
public void changeViewPosition(View child, int newIndex) { public void changeViewPosition(View child, int newIndex) {
int currentIndex = indexOfChild(child); int currentIndex = indexOfChild(child);
if (currentIndex == -1) {
boolean isTransient = false;
if (child instanceof ExpandableNotificationRow
&& ((ExpandableNotificationRow)child).getTransientContainer() != null) {
isTransient = true;
}
Log.e(TAG, "Attempting to re-position "
+ (isTransient ? "transient" : "")
+ " view {"
+ child
+ "}");
return;
}
if (child != null && child.getParent() == this && currentIndex != newIndex) { if (child != null && child.getParent() == this && currentIndex != newIndex) {
mChangePositionInProgress = true; mChangePositionInProgress = true;
((ExpandableView)child).setChangingPosition(true); ((ExpandableView)child).setChangingPosition(true);
@@ -3569,17 +3589,17 @@ public class NotificationStackScrollLayout extends ViewGroup
private void clearTemporaryViews() { private void clearTemporaryViews() {
// lets make sure nothing is in the overlay / transient anymore // lets make sure nothing is in the overlay / transient anymore
clearTemporaryViews(this); clearTemporaryViewsInGroup(this);
for (int i = 0; i < getChildCount(); i++) { for (int i = 0; i < getChildCount(); i++) {
ExpandableView child = (ExpandableView) getChildAt(i); ExpandableView child = (ExpandableView) getChildAt(i);
if (child instanceof ExpandableNotificationRow) { if (child instanceof ExpandableNotificationRow) {
ExpandableNotificationRow row = (ExpandableNotificationRow) child; ExpandableNotificationRow row = (ExpandableNotificationRow) child;
clearTemporaryViews(row.getChildrenContainer()); clearTemporaryViewsInGroup(row.getChildrenContainer());
} }
} }
} }
private void clearTemporaryViews(ViewGroup viewGroup) { private void clearTemporaryViewsInGroup(ViewGroup viewGroup) {
while (viewGroup != null && viewGroup.getTransientViewCount() != 0) { while (viewGroup != null && viewGroup.getTransientViewCount() != 0) {
viewGroup.removeTransientView(viewGroup.getTransientView(0)); viewGroup.removeTransientView(viewGroup.getTransientView(0));
} }