diff options
author | 2025-01-29 14:28:10 -0800 | |
---|---|---|
committer | 2025-01-29 14:28:10 -0800 | |
commit | 26e656a3fe4e77a99f7ea67a665609bd88cf51f2 (patch) | |
tree | 9b6e5c29f8bb07eeb16be7158383c21b18bd8daf | |
parent | 77cf181a41ce883ea5ad2ab2ed149580222b6948 (diff) | |
parent | ad4536ecf7fabe9cbbf25ee81aadb2f96776a46b (diff) |
Merge "Fade AOD RON in on AOD and out otherwise" into main
4 files changed, 46 insertions, 19 deletions
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/blueprint/DefaultBlueprint.kt b/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/blueprint/DefaultBlueprint.kt index 478970f4e210..d3417022565b 100644 --- a/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/blueprint/DefaultBlueprint.kt +++ b/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/blueprint/DefaultBlueprint.kt @@ -45,7 +45,6 @@ import com.android.systemui.keyguard.ui.composable.section.StatusBarSection import com.android.systemui.keyguard.ui.composable.section.TopAreaSection import com.android.systemui.keyguard.ui.viewmodel.LockscreenContentViewModel import com.android.systemui.res.R -import com.android.systemui.statusbar.notification.promoted.PromotedNotificationUiAod import java.util.Optional import javax.inject.Inject import kotlin.math.roundToInt @@ -130,9 +129,7 @@ constructor( if (!isShadeLayoutWide && !isBypassEnabled) { Box(modifier = Modifier.weight(weight = 1f)) { Column(Modifier.align(alignment = Alignment.TopStart)) { - if (PromotedNotificationUiAod.isEnabled) { - AodPromotedNotification() - } + AodPromotedNotificationArea() AodNotificationIcons( modifier = Modifier.padding(start = aodIconPadding) ) @@ -145,9 +142,7 @@ constructor( } } else { Column { - if (PromotedNotificationUiAod.isEnabled) { - AodPromotedNotification() - } + AodPromotedNotificationArea() AodNotificationIcons( modifier = Modifier.padding(start = aodIconPadding) ) diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/section/NotificationSection.kt b/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/section/NotificationSection.kt index b66690c2fe89..abf7fdc05f2e 100644 --- a/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/section/NotificationSection.kt +++ b/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/section/NotificationSection.kt @@ -54,6 +54,7 @@ import com.android.systemui.statusbar.notification.icon.ui.viewbinder.Notificati import com.android.systemui.statusbar.notification.icon.ui.viewbinder.StatusBarIconViewBindingFailureTracker import com.android.systemui.statusbar.notification.icon.ui.viewmodel.NotificationIconContainerAlwaysOnDisplayViewModel import com.android.systemui.statusbar.notification.promoted.AODPromotedNotification +import com.android.systemui.statusbar.notification.promoted.PromotedNotificationUiAod import com.android.systemui.statusbar.notification.promoted.ui.viewmodel.AODPromotedNotificationViewModel import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout import com.android.systemui.statusbar.notification.stack.ui.view.NotificationScrollView @@ -110,8 +111,23 @@ constructor( } @Composable - fun AodPromotedNotification() { - AODPromotedNotification(aodPromotedNotificationViewModelFactory) + fun AodPromotedNotificationArea(modifier: Modifier = Modifier) { + if (!PromotedNotificationUiAod.isEnabled) { + return + } + + val isVisible by + keyguardRootViewModel.isAodPromotedNotifVisible.collectAsStateWithLifecycle() + val burnIn = rememberBurnIn(clockInteractor) + + AnimatedVisibility( + visible = isVisible, + enter = fadeIn(), + exit = fadeOut(), + modifier = modifier.burnInAware(aodBurnInViewModel, burnIn.parameters), + ) { + AODPromotedNotification(aodPromotedNotificationViewModelFactory) + } } @Composable diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardRootViewBinder.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardRootViewBinder.kt index 70a52afeb8c2..017fe169ca88 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardRootViewBinder.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardRootViewBinder.kt @@ -56,6 +56,7 @@ import com.android.systemui.keyguard.domain.interactor.KeyguardClockInteractor import com.android.systemui.keyguard.domain.interactor.WallpaperFocalAreaInteractor import com.android.systemui.keyguard.shared.model.KeyguardState import com.android.systemui.keyguard.shared.model.TransitionState +import com.android.systemui.keyguard.ui.view.layout.sections.AodPromotedNotificationSection import com.android.systemui.keyguard.ui.viewmodel.BurnInParameters import com.android.systemui.keyguard.ui.viewmodel.KeyguardBlueprintViewModel import com.android.systemui.keyguard.ui.viewmodel.KeyguardClockViewModel @@ -184,6 +185,7 @@ object KeyguardRootViewBinder { viewModel.translationY.collect { y -> childViews[burnInLayerId]?.translationY = y childViews[largeClockId]?.translationY = y + childViews[aodPromotedNotificationId]?.translationY = y childViews[aodNotificationIconContainerId]?.translationY = y } } @@ -195,6 +197,7 @@ object KeyguardRootViewBinder { state.isToOrFrom(KeyguardState.AOD) -> { // Large Clock is not translated in the x direction childViews[burnInLayerId]?.translationX = px + childViews[aodPromotedNotificationId]?.translationX = px childViews[aodNotificationIconContainerId]?.translationX = px } state.isToOrFrom(KeyguardState.GLANCEABLE_HUB) -> { @@ -291,11 +294,17 @@ object KeyguardRootViewBinder { blueprintViewModel.refreshBlueprint() } childViews[aodNotificationIconContainerId] - ?.setAodNotifIconContainerIsVisible( - isVisible, - iconsAppearTranslationPx.value, - screenOffAnimationController, - ) + ?.setAodNotifIconContainerIsVisible(isVisible) + } + } + + launch { + viewModel.isNotifIconContainerVisible.collect { isVisible -> + if (isVisible.value) { + blueprintViewModel.refreshBlueprint() + } + childViews[aodPromotedNotificationId] + ?.setAodNotifIconContainerIsVisible(isVisible) } } @@ -524,11 +533,7 @@ object KeyguardRootViewBinder { } } - private fun View.setAodNotifIconContainerIsVisible( - isVisible: AnimatedValue<Boolean>, - iconsAppearTranslationPx: Int, - screenOffAnimationController: ScreenOffAnimationController, - ) { + private fun View.setAodNotifIconContainerIsVisible(isVisible: AnimatedValue<Boolean>) { animate().cancel() val animatorListener = object : AnimatorListenerAdapter() { @@ -563,6 +568,7 @@ object KeyguardRootViewBinder { } private val burnInLayerId = R.id.burn_in_layer + private val aodPromotedNotificationId = AodPromotedNotificationSection.viewId private val aodNotificationIconContainerId = R.id.aod_notification_icon_container private val largeClockId = customR.id.lockscreen_clock_view_large private val smallClockId = customR.id.lockscreen_clock_view diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModel.kt index f0c924f99033..11a509a4fa61 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModel.kt @@ -307,6 +307,16 @@ constructor( BurnInScaleViewModel(scale = it.scale, scaleClockOnly = it.scaleClockOnly) } + val isAodPromotedNotifVisible: StateFlow<Boolean> = + keyguardTransitionInteractor + .transitionValue(AOD) + .map { it == 1f } + .stateIn( + scope = applicationScope, + started = SharingStarted.WhileSubscribed(), + initialValue = false, + ) + /** Is the notification icon container visible? */ val isNotifIconContainerVisible: StateFlow<AnimatedValue<Boolean>> = combine( |