Loading packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainer.kt +7 −2 Original line number Diff line number Diff line Loading @@ -56,6 +56,7 @@ import com.android.systemui.scene.shared.model.SceneDataSourceDelegator import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.scene.ui.view.SceneJankMonitor import com.android.systemui.scene.ui.viewmodel.SceneContainerViewModel import com.android.systemui.shade.ui.composable.OverlayShade import com.android.systemui.shade.ui.composable.isFullWidthShade import javax.inject.Provider Loading Loading @@ -100,9 +101,13 @@ fun SceneContainer( rememberActivated(traceName = "sceneJankMonitor") { sceneJankMonitorFactory.create() } val hapticFeedback = LocalHapticFeedback.current val shadeExpansionMotion = OverlayShade.rememberShadeExpansionMotion() val sceneTransitions = remember(hapticFeedback) { transitionsBuilder.build(viewModel.hapticsViewModel.getRevealHaptics(hapticFeedback)) remember(hapticFeedback, shadeExpansionMotion) { transitionsBuilder.build( shadeExpansionMotion, viewModel.hapticsViewModel.getRevealHaptics(hapticFeedback), ) } val state = Loading packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainerTransitions.kt +33 −7 Original line number Diff line number Diff line Loading @@ -6,6 +6,7 @@ import com.android.compose.animation.scene.TransitionKey import com.android.compose.animation.scene.reveal.ContainerRevealHaptics import com.android.compose.animation.scene.transitions import com.android.internal.jank.Cuj import com.android.mechanics.behavior.EdgeContainerExpansionSpec import com.android.systemui.notifications.ui.composable.Notifications import com.android.systemui.scene.shared.model.Overlays import com.android.systemui.scene.shared.model.Scenes Loading Loading @@ -48,7 +49,10 @@ import com.android.systemui.shade.ui.composable.Shade * Please keep the list sorted alphabetically. */ class SceneContainerTransitions : SceneContainerTransitionsBuilder { override fun build(revealHaptics: ContainerRevealHaptics): SceneTransitions { override fun build( shadeExpansionMotion: EdgeContainerExpansionSpec, revealHaptics: ContainerRevealHaptics, ): SceneTransitions { return transitions { interruptionHandler = DefaultInterruptionHandler Loading Loading @@ -201,13 +205,19 @@ class SceneContainerTransitions : SceneContainerTransitionsBuilder { Overlays.NotificationsShade, cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE, // NOTYPO ) { toNotificationsShadeTransition(revealHaptics = revealHaptics) toNotificationsShadeTransition( shadeExpansionMotion = shadeExpansionMotion, revealHaptics = revealHaptics, ) } to( Overlays.QuickSettingsShade, cuj = Cuj.CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE, // NOTYPO ) { toQuickSettingsShadeTransition(revealHaptics = revealHaptics) toQuickSettingsShadeTransition( shadeExpansionMotion = shadeExpansionMotion, revealHaptics = revealHaptics, ) } from( Scenes.Gone, Loading @@ -215,7 +225,11 @@ class SceneContainerTransitions : SceneContainerTransitionsBuilder { key = SlightlyFasterShadeCollapse, cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE, // NOTYPO ) { toNotificationsShadeTransition(durationScale = 0.9, revealHaptics = revealHaptics) toNotificationsShadeTransition( durationScale = 0.9, shadeExpansionMotion = shadeExpansionMotion, revealHaptics = revealHaptics, ) } from( Scenes.Gone, Loading @@ -223,7 +237,11 @@ class SceneContainerTransitions : SceneContainerTransitionsBuilder { key = SlightlyFasterShadeCollapse, cuj = Cuj.CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE, // NOTYPO ) { toQuickSettingsShadeTransition(durationScale = 0.9, revealHaptics = revealHaptics) toQuickSettingsShadeTransition( durationScale = 0.9, shadeExpansionMotion = shadeExpansionMotion, revealHaptics = revealHaptics, ) } from( Scenes.Lockscreen, Loading @@ -231,7 +249,11 @@ class SceneContainerTransitions : SceneContainerTransitionsBuilder { key = SlightlyFasterShadeCollapse, cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE, // NOTYPO ) { toNotificationsShadeTransition(durationScale = 0.9, revealHaptics = revealHaptics) toNotificationsShadeTransition( durationScale = 0.9, shadeExpansionMotion = shadeExpansionMotion, revealHaptics = revealHaptics, ) } from( Scenes.Lockscreen, Loading @@ -239,7 +261,11 @@ class SceneContainerTransitions : SceneContainerTransitionsBuilder { key = SlightlyFasterShadeCollapse, cuj = Cuj.CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE, // NOTYPO ) { toQuickSettingsShadeTransition(durationScale = 0.9, revealHaptics = revealHaptics) toQuickSettingsShadeTransition( durationScale = 0.9, shadeExpansionMotion = shadeExpansionMotion, revealHaptics = revealHaptics, ) } } } Loading packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainerTransitionsBuilder.kt +9 −2 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.systemui.scene.ui.composable import com.android.compose.animation.scene.SceneTransitions import com.android.compose.animation.scene.reveal.ContainerRevealHaptics import com.android.compose.animation.scene.transitions import com.android.mechanics.behavior.EdgeContainerExpansionSpec /** * Builder of the comprehensive definition of all transitions between scenes and overlays in the Loading @@ -27,7 +28,10 @@ import com.android.compose.animation.scene.transitions interface SceneContainerTransitionsBuilder { /** Build the [SceneContainer] transitions spec. */ fun build(revealHaptics: ContainerRevealHaptics): SceneTransitions fun build( shadeExpansionMotion: EdgeContainerExpansionSpec, revealHaptics: ContainerRevealHaptics, ): SceneTransitions } /** Loading @@ -37,5 +41,8 @@ interface SceneContainerTransitionsBuilder { class ConstantSceneContainerTransitionsBuilder( private val transitions: SceneTransitions = transitions { /* No transitions */ } ) : SceneContainerTransitionsBuilder { override fun build(revealHaptics: ContainerRevealHaptics): SceneTransitions = transitions override fun build( shadeExpansionMotion: EdgeContainerExpansionSpec, revealHaptics: ContainerRevealHaptics, ): SceneTransitions = transitions } packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/ToNotificationsShadeTransition.kt +3 −1 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import androidx.compose.animation.core.tween import com.android.compose.animation.scene.TransitionBuilder import com.android.compose.animation.scene.reveal.ContainerRevealHaptics import com.android.compose.animation.scene.reveal.verticalContainerReveal import com.android.mechanics.behavior.EdgeContainerExpansionSpec import com.android.systemui.keyguard.ui.composable.blueprint.ClockElementKeys import com.android.systemui.notifications.ui.composable.NotificationsShade import com.android.systemui.scene.shared.model.Overlays Loading @@ -28,6 +29,7 @@ import kotlin.time.Duration.Companion.milliseconds fun TransitionBuilder.toNotificationsShadeTransition( durationScale: Double = 1.0, shadeExpansionMotion: EdgeContainerExpansionSpec, revealHaptics: ContainerRevealHaptics, ) { spec = tween(durationMillis = (DefaultDuration * durationScale).inWholeMilliseconds.toInt()) Loading @@ -38,7 +40,7 @@ fun TransitionBuilder.toNotificationsShadeTransition( elevateInContent = Overlays.NotificationsShade, ) verticalContainerReveal(NotificationsShade.Elements.Panel, revealHaptics) verticalContainerReveal(NotificationsShade.Elements.Panel, shadeExpansionMotion, revealHaptics) fractionRange(end = .5f) { fade(OverlayShade.Elements.Scrim) } fractionRange(start = .5f) { fade(NotificationsShade.Elements.StatusBar) } Loading packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/ToQuickSettingsShadeTransition.kt +3 −1 Original line number Diff line number Diff line Loading @@ -20,17 +20,19 @@ import androidx.compose.animation.core.tween import com.android.compose.animation.scene.TransitionBuilder import com.android.compose.animation.scene.reveal.ContainerRevealHaptics import com.android.compose.animation.scene.reveal.verticalContainerReveal import com.android.mechanics.behavior.EdgeContainerExpansionSpec import com.android.systemui.qs.ui.composable.QuickSettingsShade import com.android.systemui.shade.ui.composable.OverlayShade import kotlin.time.Duration.Companion.milliseconds fun TransitionBuilder.toQuickSettingsShadeTransition( durationScale: Double = 1.0, shadeExpansionMotion: EdgeContainerExpansionSpec, revealHaptics: ContainerRevealHaptics, ) { spec = tween(durationMillis = (DefaultDuration * durationScale).inWholeMilliseconds.toInt()) verticalContainerReveal(QuickSettingsShade.Elements.Panel, revealHaptics) verticalContainerReveal(QuickSettingsShade.Elements.Panel, shadeExpansionMotion, revealHaptics) fractionRange(end = .5f) { fade(OverlayShade.Elements.Scrim) } fractionRange(start = .5f) { fade(QuickSettingsShade.Elements.StatusBar) } Loading Loading
packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainer.kt +7 −2 Original line number Diff line number Diff line Loading @@ -56,6 +56,7 @@ import com.android.systemui.scene.shared.model.SceneDataSourceDelegator import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.scene.ui.view.SceneJankMonitor import com.android.systemui.scene.ui.viewmodel.SceneContainerViewModel import com.android.systemui.shade.ui.composable.OverlayShade import com.android.systemui.shade.ui.composable.isFullWidthShade import javax.inject.Provider Loading Loading @@ -100,9 +101,13 @@ fun SceneContainer( rememberActivated(traceName = "sceneJankMonitor") { sceneJankMonitorFactory.create() } val hapticFeedback = LocalHapticFeedback.current val shadeExpansionMotion = OverlayShade.rememberShadeExpansionMotion() val sceneTransitions = remember(hapticFeedback) { transitionsBuilder.build(viewModel.hapticsViewModel.getRevealHaptics(hapticFeedback)) remember(hapticFeedback, shadeExpansionMotion) { transitionsBuilder.build( shadeExpansionMotion, viewModel.hapticsViewModel.getRevealHaptics(hapticFeedback), ) } val state = Loading
packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainerTransitions.kt +33 −7 Original line number Diff line number Diff line Loading @@ -6,6 +6,7 @@ import com.android.compose.animation.scene.TransitionKey import com.android.compose.animation.scene.reveal.ContainerRevealHaptics import com.android.compose.animation.scene.transitions import com.android.internal.jank.Cuj import com.android.mechanics.behavior.EdgeContainerExpansionSpec import com.android.systemui.notifications.ui.composable.Notifications import com.android.systemui.scene.shared.model.Overlays import com.android.systemui.scene.shared.model.Scenes Loading Loading @@ -48,7 +49,10 @@ import com.android.systemui.shade.ui.composable.Shade * Please keep the list sorted alphabetically. */ class SceneContainerTransitions : SceneContainerTransitionsBuilder { override fun build(revealHaptics: ContainerRevealHaptics): SceneTransitions { override fun build( shadeExpansionMotion: EdgeContainerExpansionSpec, revealHaptics: ContainerRevealHaptics, ): SceneTransitions { return transitions { interruptionHandler = DefaultInterruptionHandler Loading Loading @@ -201,13 +205,19 @@ class SceneContainerTransitions : SceneContainerTransitionsBuilder { Overlays.NotificationsShade, cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE, // NOTYPO ) { toNotificationsShadeTransition(revealHaptics = revealHaptics) toNotificationsShadeTransition( shadeExpansionMotion = shadeExpansionMotion, revealHaptics = revealHaptics, ) } to( Overlays.QuickSettingsShade, cuj = Cuj.CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE, // NOTYPO ) { toQuickSettingsShadeTransition(revealHaptics = revealHaptics) toQuickSettingsShadeTransition( shadeExpansionMotion = shadeExpansionMotion, revealHaptics = revealHaptics, ) } from( Scenes.Gone, Loading @@ -215,7 +225,11 @@ class SceneContainerTransitions : SceneContainerTransitionsBuilder { key = SlightlyFasterShadeCollapse, cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE, // NOTYPO ) { toNotificationsShadeTransition(durationScale = 0.9, revealHaptics = revealHaptics) toNotificationsShadeTransition( durationScale = 0.9, shadeExpansionMotion = shadeExpansionMotion, revealHaptics = revealHaptics, ) } from( Scenes.Gone, Loading @@ -223,7 +237,11 @@ class SceneContainerTransitions : SceneContainerTransitionsBuilder { key = SlightlyFasterShadeCollapse, cuj = Cuj.CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE, // NOTYPO ) { toQuickSettingsShadeTransition(durationScale = 0.9, revealHaptics = revealHaptics) toQuickSettingsShadeTransition( durationScale = 0.9, shadeExpansionMotion = shadeExpansionMotion, revealHaptics = revealHaptics, ) } from( Scenes.Lockscreen, Loading @@ -231,7 +249,11 @@ class SceneContainerTransitions : SceneContainerTransitionsBuilder { key = SlightlyFasterShadeCollapse, cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE, // NOTYPO ) { toNotificationsShadeTransition(durationScale = 0.9, revealHaptics = revealHaptics) toNotificationsShadeTransition( durationScale = 0.9, shadeExpansionMotion = shadeExpansionMotion, revealHaptics = revealHaptics, ) } from( Scenes.Lockscreen, Loading @@ -239,7 +261,11 @@ class SceneContainerTransitions : SceneContainerTransitionsBuilder { key = SlightlyFasterShadeCollapse, cuj = Cuj.CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE, // NOTYPO ) { toQuickSettingsShadeTransition(durationScale = 0.9, revealHaptics = revealHaptics) toQuickSettingsShadeTransition( durationScale = 0.9, shadeExpansionMotion = shadeExpansionMotion, revealHaptics = revealHaptics, ) } } } Loading
packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainerTransitionsBuilder.kt +9 −2 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.systemui.scene.ui.composable import com.android.compose.animation.scene.SceneTransitions import com.android.compose.animation.scene.reveal.ContainerRevealHaptics import com.android.compose.animation.scene.transitions import com.android.mechanics.behavior.EdgeContainerExpansionSpec /** * Builder of the comprehensive definition of all transitions between scenes and overlays in the Loading @@ -27,7 +28,10 @@ import com.android.compose.animation.scene.transitions interface SceneContainerTransitionsBuilder { /** Build the [SceneContainer] transitions spec. */ fun build(revealHaptics: ContainerRevealHaptics): SceneTransitions fun build( shadeExpansionMotion: EdgeContainerExpansionSpec, revealHaptics: ContainerRevealHaptics, ): SceneTransitions } /** Loading @@ -37,5 +41,8 @@ interface SceneContainerTransitionsBuilder { class ConstantSceneContainerTransitionsBuilder( private val transitions: SceneTransitions = transitions { /* No transitions */ } ) : SceneContainerTransitionsBuilder { override fun build(revealHaptics: ContainerRevealHaptics): SceneTransitions = transitions override fun build( shadeExpansionMotion: EdgeContainerExpansionSpec, revealHaptics: ContainerRevealHaptics, ): SceneTransitions = transitions }
packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/ToNotificationsShadeTransition.kt +3 −1 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import androidx.compose.animation.core.tween import com.android.compose.animation.scene.TransitionBuilder import com.android.compose.animation.scene.reveal.ContainerRevealHaptics import com.android.compose.animation.scene.reveal.verticalContainerReveal import com.android.mechanics.behavior.EdgeContainerExpansionSpec import com.android.systemui.keyguard.ui.composable.blueprint.ClockElementKeys import com.android.systemui.notifications.ui.composable.NotificationsShade import com.android.systemui.scene.shared.model.Overlays Loading @@ -28,6 +29,7 @@ import kotlin.time.Duration.Companion.milliseconds fun TransitionBuilder.toNotificationsShadeTransition( durationScale: Double = 1.0, shadeExpansionMotion: EdgeContainerExpansionSpec, revealHaptics: ContainerRevealHaptics, ) { spec = tween(durationMillis = (DefaultDuration * durationScale).inWholeMilliseconds.toInt()) Loading @@ -38,7 +40,7 @@ fun TransitionBuilder.toNotificationsShadeTransition( elevateInContent = Overlays.NotificationsShade, ) verticalContainerReveal(NotificationsShade.Elements.Panel, revealHaptics) verticalContainerReveal(NotificationsShade.Elements.Panel, shadeExpansionMotion, revealHaptics) fractionRange(end = .5f) { fade(OverlayShade.Elements.Scrim) } fractionRange(start = .5f) { fade(NotificationsShade.Elements.StatusBar) } Loading
packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/ToQuickSettingsShadeTransition.kt +3 −1 Original line number Diff line number Diff line Loading @@ -20,17 +20,19 @@ import androidx.compose.animation.core.tween import com.android.compose.animation.scene.TransitionBuilder import com.android.compose.animation.scene.reveal.ContainerRevealHaptics import com.android.compose.animation.scene.reveal.verticalContainerReveal import com.android.mechanics.behavior.EdgeContainerExpansionSpec import com.android.systemui.qs.ui.composable.QuickSettingsShade import com.android.systemui.shade.ui.composable.OverlayShade import kotlin.time.Duration.Companion.milliseconds fun TransitionBuilder.toQuickSettingsShadeTransition( durationScale: Double = 1.0, shadeExpansionMotion: EdgeContainerExpansionSpec, revealHaptics: ContainerRevealHaptics, ) { spec = tween(durationMillis = (DefaultDuration * durationScale).inWholeMilliseconds.toInt()) verticalContainerReveal(QuickSettingsShade.Elements.Panel, revealHaptics) verticalContainerReveal(QuickSettingsShade.Elements.Panel, shadeExpansionMotion, revealHaptics) fractionRange(end = .5f) { fade(OverlayShade.Elements.Scrim) } fractionRange(start = .5f) { fade(QuickSettingsShade.Elements.StatusBar) } Loading