diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconAreaController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconAreaController.java index 41af80e02b5a4..cfe95e06fb61f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconAreaController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconAreaController.java @@ -71,6 +71,7 @@ public class NotificationIconAreaController implements private final DozeParameters mDozeParameters; private final Optional mBubblesOptional; private final StatusBarWindowController mStatusBarWindowController; + private final UnlockedScreenOffAnimationController mUnlockedScreenOffAnimationController; private int mIconSize; private int mIconHPadding; @@ -119,7 +120,8 @@ public class NotificationIconAreaController implements Optional bubblesOptional, DemoModeController demoModeController, DarkIconDispatcher darkIconDispatcher, - StatusBarWindowController statusBarWindowController) { + StatusBarWindowController statusBarWindowController, + UnlockedScreenOffAnimationController unlockedScreenOffAnimationController) { mContrastColorUtil = ContrastColorUtil.getInstance(context); mContext = context; mStatusBarStateController = statusBarStateController; @@ -133,6 +135,7 @@ public class NotificationIconAreaController implements mDemoModeController = demoModeController; mDemoModeController.addCallback(this); mStatusBarWindowController = statusBarWindowController; + mUnlockedScreenOffAnimationController = unlockedScreenOffAnimationController; notificationListener.addNotificationSettingsListener(mSettingsListener); initializeNotificationAreaViews(context); @@ -677,7 +680,12 @@ public class NotificationIconAreaController implements } boolean visible = mBypassController.getBypassEnabled() || mWakeUpCoordinator.getNotificationsFullyHidden(); - if (mStatusBarStateController.getState() != StatusBarState.KEYGUARD) { + + // Hide the AOD icons if we're not in the KEYGUARD state unless the screen off animation is + // playing, in which case we want them to be visible since we're animating in the AOD UI and + // will be switching to KEYGUARD shortly. + if (mStatusBarStateController.getState() != StatusBarState.KEYGUARD + && !mUnlockedScreenOffAnimationController.isScreenOffAnimationPlaying()) { visible = false; } if (visible && mWakeUpCoordinator.isPulseExpanding()) { diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationIconAreaControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationIconAreaControllerTest.java index 5f8eb9e06c688..25aa93aa37c26 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationIconAreaControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationIconAreaControllerTest.java @@ -66,6 +66,8 @@ public class NotificationIconAreaControllerTest extends SysuiTestCase { DarkIconDispatcher mDarkIconDispatcher; @Mock StatusBarWindowController mStatusBarWindowController; + @Mock + UnlockedScreenOffAnimationController mUnlockedScreenOffAnimationController; private NotificationIconAreaController mController; @Mock private Bubbles mBubbles; @@ -87,7 +89,8 @@ public class NotificationIconAreaControllerTest extends SysuiTestCase { Optional.of(mBubbles), mDemoModeController, mDarkIconDispatcher, - mStatusBarWindowController); + mStatusBarWindowController, + mUnlockedScreenOffAnimationController); } @Test