Loading packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainerTransitions.kt +10 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ package com.android.systemui.scene.ui.composable import androidx.compose.foundation.gestures.Orientation import com.android.compose.animation.scene.ProgressConverter import com.android.compose.animation.scene.TransitionKey import com.android.compose.animation.scene.transitions import com.android.systemui.bouncer.ui.composable.Bouncer import com.android.systemui.notifications.ui.composable.Notifications Loading @@ -9,6 +10,7 @@ import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.scene.shared.model.TransitionKeys.SlightlyFasterShadeCollapse import com.android.systemui.scene.shared.model.TransitionKeys.ToSplitShade import com.android.systemui.scene.ui.composable.transitions.bouncerToGoneTransition import com.android.systemui.scene.ui.composable.transitions.bouncerToLockscreenPreview import com.android.systemui.scene.ui.composable.transitions.goneToNotificationsShadeTransition import com.android.systemui.scene.ui.composable.transitions.goneToQuickSettingsShadeTransition import com.android.systemui.scene.ui.composable.transitions.goneToQuickSettingsTransition Loading Loading @@ -59,6 +61,14 @@ val SceneContainerTransitions = transitions { } from(Scenes.Lockscreen, to = Scenes.Bouncer) { lockscreenToBouncerTransition() } from( Scenes.Lockscreen, to = Scenes.Bouncer, key = TransitionKey.PredictiveBack, reversePreview = { bouncerToLockscreenPreview() } ) { lockscreenToBouncerTransition() } from(Scenes.Lockscreen, to = Scenes.Communal) { lockscreenToCommunalTransition() } from(Scenes.Lockscreen, to = Scenes.NotificationsShade) { lockscreenToNotificationsShadeTransition() Loading packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/FromLockscreenToBouncerTransition.kt +7 −0 Original line number Diff line number Diff line package com.android.systemui.scene.ui.composable.transitions import androidx.compose.animation.core.CubicBezierEasing import androidx.compose.animation.core.tween import androidx.compose.ui.unit.dp import com.android.compose.animation.scene.TransitionBuilder Loading @@ -18,3 +19,9 @@ fun TransitionBuilder.lockscreenToBouncerTransition() { fade(Bouncer.Elements.Content) } } fun TransitionBuilder.bouncerToLockscreenPreview() { fractionRange(easing = CubicBezierEasing(0.1f, 0.1f, 0f, 1f)) { scaleDraw(Bouncer.Elements.Content, scaleY = 0.8f, scaleX = 0.8f) } } packages/SystemUI/src/com/android/systemui/scene/domain/interactor/WindowRootViewVisibilityInteractor.kt +27 −13 Original line number Diff line number Diff line Loading @@ -38,6 +38,8 @@ import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.flatMapConcat import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch Loading Loading @@ -73,14 +75,24 @@ constructor( sceneInteractorProvider .get() .transitionState .map { state -> .flatMapConcat { state -> when (state) { is ObservableTransitionState.Idle -> flowOf( state.currentScene == Scenes.Shade || state.currentScene == Scenes.NotificationsShade || state.currentScene == Scenes.QuickSettingsShade || state.currentScene == Scenes.Lockscreen ) is ObservableTransitionState.Transition -> if ( state.fromContent == Scenes.Bouncer && state.toContent == Scenes.Lockscreen ) { // Lockscreen is not visible during preview stage of predictive back state.isInPreviewStage.map { !it } } else { flowOf( state.toContent == Scenes.Shade || state.toContent == Scenes.NotificationsShade || state.toContent == Scenes.QuickSettingsShade || Loading @@ -89,6 +101,8 @@ constructor( state.fromContent == Scenes.NotificationsShade || state.fromContent == Scenes.QuickSettingsShade || state.fromContent == Scenes.Lockscreen ) } } } .distinctUntilChanged() Loading Loading
packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainerTransitions.kt +10 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ package com.android.systemui.scene.ui.composable import androidx.compose.foundation.gestures.Orientation import com.android.compose.animation.scene.ProgressConverter import com.android.compose.animation.scene.TransitionKey import com.android.compose.animation.scene.transitions import com.android.systemui.bouncer.ui.composable.Bouncer import com.android.systemui.notifications.ui.composable.Notifications Loading @@ -9,6 +10,7 @@ import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.scene.shared.model.TransitionKeys.SlightlyFasterShadeCollapse import com.android.systemui.scene.shared.model.TransitionKeys.ToSplitShade import com.android.systemui.scene.ui.composable.transitions.bouncerToGoneTransition import com.android.systemui.scene.ui.composable.transitions.bouncerToLockscreenPreview import com.android.systemui.scene.ui.composable.transitions.goneToNotificationsShadeTransition import com.android.systemui.scene.ui.composable.transitions.goneToQuickSettingsShadeTransition import com.android.systemui.scene.ui.composable.transitions.goneToQuickSettingsTransition Loading Loading @@ -59,6 +61,14 @@ val SceneContainerTransitions = transitions { } from(Scenes.Lockscreen, to = Scenes.Bouncer) { lockscreenToBouncerTransition() } from( Scenes.Lockscreen, to = Scenes.Bouncer, key = TransitionKey.PredictiveBack, reversePreview = { bouncerToLockscreenPreview() } ) { lockscreenToBouncerTransition() } from(Scenes.Lockscreen, to = Scenes.Communal) { lockscreenToCommunalTransition() } from(Scenes.Lockscreen, to = Scenes.NotificationsShade) { lockscreenToNotificationsShadeTransition() Loading
packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/FromLockscreenToBouncerTransition.kt +7 −0 Original line number Diff line number Diff line package com.android.systemui.scene.ui.composable.transitions import androidx.compose.animation.core.CubicBezierEasing import androidx.compose.animation.core.tween import androidx.compose.ui.unit.dp import com.android.compose.animation.scene.TransitionBuilder Loading @@ -18,3 +19,9 @@ fun TransitionBuilder.lockscreenToBouncerTransition() { fade(Bouncer.Elements.Content) } } fun TransitionBuilder.bouncerToLockscreenPreview() { fractionRange(easing = CubicBezierEasing(0.1f, 0.1f, 0f, 1f)) { scaleDraw(Bouncer.Elements.Content, scaleY = 0.8f, scaleX = 0.8f) } }
packages/SystemUI/src/com/android/systemui/scene/domain/interactor/WindowRootViewVisibilityInteractor.kt +27 −13 Original line number Diff line number Diff line Loading @@ -38,6 +38,8 @@ import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.flatMapConcat import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch Loading Loading @@ -73,14 +75,24 @@ constructor( sceneInteractorProvider .get() .transitionState .map { state -> .flatMapConcat { state -> when (state) { is ObservableTransitionState.Idle -> flowOf( state.currentScene == Scenes.Shade || state.currentScene == Scenes.NotificationsShade || state.currentScene == Scenes.QuickSettingsShade || state.currentScene == Scenes.Lockscreen ) is ObservableTransitionState.Transition -> if ( state.fromContent == Scenes.Bouncer && state.toContent == Scenes.Lockscreen ) { // Lockscreen is not visible during preview stage of predictive back state.isInPreviewStage.map { !it } } else { flowOf( state.toContent == Scenes.Shade || state.toContent == Scenes.NotificationsShade || state.toContent == Scenes.QuickSettingsShade || Loading @@ -89,6 +101,8 @@ constructor( state.fromContent == Scenes.NotificationsShade || state.fromContent == Scenes.QuickSettingsShade || state.fromContent == Scenes.Lockscreen ) } } } .distinctUntilChanged() Loading