diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ActivatableNotificationView.java b/packages/SystemUI/src/com/android/systemui/statusbar/ActivatableNotificationView.java index 71f74cdcbdebd..42c9a126ca141 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/ActivatableNotificationView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/ActivatableNotificationView.java @@ -98,6 +98,7 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView private boolean mDark; private int mBgTint = 0; + private float mBgAlpha = 1f; /** * Flag to indicate that the notification has been touched once and the second touch will @@ -392,6 +393,7 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView public void setDimmed(boolean dimmed, boolean fade) { if (mDimmed != dimmed) { mDimmed = dimmed; + resetBackgroundAlpha(); if (fade) { fadeDimmedBackground(); } else { @@ -594,14 +596,28 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView mBackgroundAnimator.start(); } + protected void updateBackgroundAlpha(float transformationAmount) { + mBgAlpha = isChildInGroup() && mDimmed ? transformationAmount : 1f; + mBackgroundDimmed.setAlpha(mBgAlpha); + } + + protected void resetBackgroundAlpha() { + updateBackgroundAlpha(0f /* transformationAmount */); + } + protected void updateBackground() { cancelFadeAnimations(); if (shouldHideBackground()) { mBackgroundDimmed.setVisibility(View.INVISIBLE); mBackgroundNormal.setVisibility(View.INVISIBLE); } else if (mDimmed) { - mBackgroundDimmed.setVisibility(View.VISIBLE); - mBackgroundNormal.setVisibility(mActivated ? View.VISIBLE : View.INVISIBLE); + // When groups are animating to the expanded state from the lockscreen, show the + // normal background instead of the dimmed background + final boolean dontShowDimmed = isGroupExpansionChanging() && isChildInGroup(); + mBackgroundDimmed.setVisibility(dontShowDimmed ? View.INVISIBLE : View.VISIBLE); + mBackgroundNormal.setVisibility((mActivated || dontShowDimmed) + ? View.VISIBLE + : View.INVISIBLE); } else { mBackgroundDimmed.setVisibility(View.INVISIBLE); mBackgroundNormal.setVisibility(View.VISIBLE); @@ -876,6 +892,7 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView public void reset() { setTintColor(0); + resetBackgroundAlpha(); setShowingLegacyBackground(false); setBelowSpeedBump(false); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java index b855b7cf955d0..760f4328e4e33 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java @@ -381,6 +381,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView { boolean childInGroup = BaseStatusBar.ENABLE_CHILD_NOTIFICATIONS && isChildInGroup; mNotificationParent = childInGroup ? parent : null; mPrivateLayout.setIsChildInGroup(childInGroup); + resetBackgroundAlpha(); updateBackgroundForGroupState(); updateClickAndFocus(); if (mNotificationParent != null) { @@ -1072,7 +1073,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView { mPrivateLayout.setUserExpanding(userLocked); if (mIsSummaryWithChildren) { mChildrenContainer.setUserLocked(userLocked); - if (userLocked) { + if (userLocked || (!userLocked && !isGroupExpanded())) { updateBackgroundForGroupState(); } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationContentView.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationContentView.java index d6c02e481b7dc..bdbeb2b13498a 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationContentView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationContentView.java @@ -462,6 +462,7 @@ public class NotificationContentView extends FrameLayout { endColor = NotificationUtils.interpolateColors(startColor, endColor, transformationAmount); } + mContainingNotification.updateBackgroundAlpha(transformationAmount); mContainingNotification.setContentBackground(endColor, false, this); } @@ -594,6 +595,7 @@ public class NotificationContentView extends FrameLayout { public void updateBackgroundColor(boolean animate) { int customBackgroundColor = getBackgroundColor(mVisibleType); + mContainingNotification.resetBackgroundAlpha(); mContainingNotification.setContentBackground(customBackgroundColor, animate, this); }