Loading packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/layout/LockscreenSceneLayout.kt +13 −4 Original line number Diff line number Diff line Loading @@ -19,6 +19,8 @@ package com.android.systemui.keyguard.ui.composable.layout import androidx.compose.runtime.Composable import androidx.compose.runtime.Immutable import androidx.compose.ui.Modifier import androidx.compose.ui.draw.alpha import androidx.compose.ui.graphics.graphicsLayer import androidx.compose.ui.layout.HorizontalAlignmentLine import androidx.compose.ui.layout.Layout import androidx.compose.ui.layout.VerticalAlignmentLine Loading @@ -26,6 +28,8 @@ import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.unit.Constraints import androidx.compose.ui.unit.IntRect import androidx.compose.ui.unit.dp import com.android.compose.animation.scene.ContentScope import com.android.compose.modifiers.thenIf import com.android.systemui.plugins.keyguard.ui.composable.elements.LockscreenElementContext import com.android.systemui.plugins.keyguard.ui.composable.elements.LockscreenElementFactory import com.android.systemui.plugins.keyguard.ui.composable.elements.LockscreenElementFactory.Companion.lockscreenElement Loading Loading @@ -109,7 +113,7 @@ object LockIconAlignmentLines { * as it may be drawn on top of the UDFPS (under display fingerprint sensor) */ @Composable fun LockscreenSceneLayout( fun ContentScope.LockscreenSceneLayout( elementFactory: LockscreenElementFactory, elementContext: LockscreenElementContext, modifier: Modifier = Modifier, Loading @@ -126,7 +130,8 @@ fun LockscreenSceneLayout( elementFactory.lockscreenElement(LockscreenElementKeys.LockIcon, elementContext) elementFactory.lockscreenElement(LockscreenElementKeys.SettingsMenu, elementContext) }, modifier = modifier, // Hide the lock screen elements when an overlay is shown above. modifier = modifier.thenIf(isIdleWithOverlay()) { Modifier.graphicsLayer { alpha = 0f } }, ) { measurables, constraints -> check(measurables.size == 5) val statusBarMeasurable = measurables[0] Loading Loading @@ -154,7 +159,7 @@ fun LockscreenSceneLayout( val lockIconConstrainedMaxHeight = lockIconBounds.top - spacingAboveLockIconPx - statusBarPlaceable.measuredHeight val contentPlaceableOrNull = val contentPlaceable = contentMeasurable.measure( Constraints( minWidth = 0, Loading @@ -171,7 +176,7 @@ fun LockscreenSceneLayout( layout(constraints.maxWidth, constraints.maxHeight) { statusBarPlaceable.place(0, 0) contentPlaceableOrNull?.placeRelative(0, statusBarPlaceable.measuredHeight) contentPlaceable.placeRelative(0, statusBarPlaceable.measuredHeight) bottomAreaPlaceable.place(0, constraints.maxHeight - bottomAreaPlaceable.measuredHeight) lockIconPlaceable.place(x = lockIconBounds.left, y = lockIconBounds.top) settingsMenuPleaceable.placeRelative( Loading @@ -181,3 +186,7 @@ fun LockscreenSceneLayout( } } } private fun ContentScope.isIdleWithOverlay(): Boolean { return !layoutState.isTransitioning() && layoutState.currentOverlays.isNotEmpty() } packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainerTransitions.kt +35 −12 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ import com.android.systemui.scene.shared.model.TransitionKeys.SlightlyFasterShad 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.bouncerToLockscreenTransition import com.android.systemui.scene.ui.composable.transitions.communalToBouncerTransition import com.android.systemui.scene.ui.composable.transitions.communalToShadeTransition import com.android.systemui.scene.ui.composable.transitions.dreamToBouncerTransition Loading @@ -23,14 +24,16 @@ import com.android.systemui.scene.ui.composable.transitions.dreamToGoneTransitio import com.android.systemui.scene.ui.composable.transitions.dreamToShadeTransition import com.android.systemui.scene.ui.composable.transitions.fromBouncerTransition import com.android.systemui.scene.ui.composable.transitions.goneToQuickSettingsTransition import com.android.systemui.scene.ui.composable.transitions.goneToShadeTransition import com.android.systemui.scene.ui.composable.transitions.goneToShadeSceneTransition import com.android.systemui.scene.ui.composable.transitions.goneToSplitShadeTransition import com.android.systemui.scene.ui.composable.transitions.lockscreenToBouncerTransition import com.android.systemui.scene.ui.composable.transitions.lockscreenToCommunalTransition import com.android.systemui.scene.ui.composable.transitions.lockscreenToDreamTransition import com.android.systemui.scene.ui.composable.transitions.lockscreenToGoneTransition import com.android.systemui.scene.ui.composable.transitions.lockscreenToQuickSettingsTransition import com.android.systemui.scene.ui.composable.transitions.lockscreenToShadeTransition import com.android.systemui.scene.ui.composable.transitions.lockscreenToNotificationsShadeTransition import com.android.systemui.scene.ui.composable.transitions.lockscreenToQuickSettingsOverlayTransition import com.android.systemui.scene.ui.composable.transitions.lockscreenToQuickSettingsSceneTransition import com.android.systemui.scene.ui.composable.transitions.lockscreenToShadeSceneTransition import com.android.systemui.scene.ui.composable.transitions.lockscreenToSplitShadeTransition import com.android.systemui.scene.ui.composable.transitions.shadeToQuickSettingsTransition import com.android.systemui.scene.ui.composable.transitions.toBouncerTransition Loading Loading @@ -75,7 +78,7 @@ class SceneContainerTransitions : SceneContainerTransitionsBuilder { to = Scenes.Shade, cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE, // NOTYPO ) { goneToShadeTransition() goneToShadeSceneTransition() } from( Scenes.Gone, Loading @@ -91,7 +94,7 @@ class SceneContainerTransitions : SceneContainerTransitionsBuilder { key = SlightlyFasterShadeCollapse, cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE, // NOTYPO ) { goneToShadeTransition(durationScale = 0.9) goneToShadeSceneTransition(durationScale = 0.9) } from( Scenes.Gone, Loading @@ -116,7 +119,7 @@ class SceneContainerTransitions : SceneContainerTransitionsBuilder { to = Scenes.Shade, cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE, // NOTYPO ) { lockscreenToShadeTransition() lockscreenToShadeSceneTransition() } from( Scenes.Lockscreen, Loading @@ -133,14 +136,14 @@ class SceneContainerTransitions : SceneContainerTransitionsBuilder { key = SlightlyFasterShadeCollapse, cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE, // NOTYPO ) { lockscreenToShadeTransition(durationScale = 0.9) lockscreenToShadeSceneTransition(durationScale = 0.9) } from( Scenes.Lockscreen, to = Scenes.QuickSettings, cuj = Cuj.CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE, // NOTYPO ) { lockscreenToQuickSettingsTransition() lockscreenToQuickSettingsSceneTransition() } from(Scenes.Lockscreen, to = Scenes.Gone) { lockscreenToGoneTransition() } from( Loading Loading @@ -172,7 +175,7 @@ class SceneContainerTransitions : SceneContainerTransitionsBuilder { to = Scenes.Lockscreen, cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE, // NOTYPO ) { reversed { lockscreenToShadeTransition() } reversed { lockscreenToShadeSceneTransition() } sharedElement(Notifications.Elements.NotificationStackPlaceholder, enabled = false) sharedElement( Notifications.Elements.HeadsUpNotificationPlaceholder, Loading Loading @@ -203,7 +206,7 @@ class SceneContainerTransitions : SceneContainerTransitionsBuilder { from(Scenes.Dream, to = Overlays.Bouncer) { dreamToBouncerTransition() } from(Overlays.Bouncer, to = Scenes.Dream) { fromBouncerTransition() } from(Scenes.Lockscreen, to = Overlays.Bouncer) { lockscreenToBouncerTransition() } from(Overlays.Bouncer, to = Scenes.Lockscreen) { fromBouncerTransition() } from(Overlays.Bouncer, to = Scenes.Lockscreen) { bouncerToLockscreenTransition() } from( Scenes.Lockscreen, to = Overlays.Bouncer, Loading Loading @@ -255,25 +258,45 @@ class SceneContainerTransitions : SceneContainerTransitionsBuilder { revealHaptics = revealHaptics, ) } from( Scenes.Lockscreen, to = Overlays.NotificationsShade, cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE, // NOTYPO ) { lockscreenToNotificationsShadeTransition( shadeExpansionMotion = shadeExpansionMotion, revealHaptics = revealHaptics, ) } from( Scenes.Lockscreen, to = Overlays.NotificationsShade, key = SlightlyFasterShadeCollapse, cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE, // NOTYPO ) { toNotificationsShadeTransition( lockscreenToNotificationsShadeTransition( durationScale = 0.9, shadeExpansionMotion = shadeExpansionMotion, revealHaptics = revealHaptics, ) } from( Scenes.Lockscreen, to = Overlays.QuickSettingsShade, cuj = Cuj.CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE, // NOTYPO ) { lockscreenToQuickSettingsOverlayTransition( shadeExpansionMotion = shadeExpansionMotion, revealHaptics = revealHaptics, ) } from( Scenes.Lockscreen, to = Overlays.QuickSettingsShade, key = SlightlyFasterShadeCollapse, cuj = Cuj.CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE, // NOTYPO ) { toQuickSettingsShadeTransition( lockscreenToQuickSettingsOverlayTransition( durationScale = 0.9, shadeExpansionMotion = shadeExpansionMotion, revealHaptics = revealHaptics, Loading packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/FromBouncerToLockscreenTransition.kt 0 → 100644 +33 −0 Original line number Diff line number Diff line /* * Copyright (C) 2025 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.systemui.scene.ui.composable.transitions import androidx.compose.animation.core.tween import com.android.compose.animation.scene.TransitionBuilder import com.android.systemui.plugins.keyguard.ui.composable.elements.LockscreenElementKeys import kotlin.time.Duration.Companion.milliseconds fun TransitionBuilder.bouncerToLockscreenTransition(durationScale: Double = 1.0) { spec = tween(durationMillis = (DefaultDuration * durationScale).inWholeMilliseconds.toInt()) fromBouncerTransition() fractionRange(start = 0.95f) { fade(LockscreenElementKeys.StatusBar) } fractionRange(start = 0.8f) { fade(LockscreenElementKeys.Root) } } private val DefaultDuration = 500.milliseconds packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/FromCommunalToShadeTransition.kt +1 −1 Original line number Diff line number Diff line Loading @@ -19,5 +19,5 @@ package com.android.systemui.scene.ui.composable.transitions import com.android.compose.animation.scene.TransitionBuilder fun TransitionBuilder.communalToShadeTransition() { toShadeTransition() toShadeSceneTransition() } packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/FromDreamToShadeTransition.kt +1 −1 Original line number Diff line number Diff line Loading @@ -19,5 +19,5 @@ package com.android.systemui.scene.ui.composable.transitions import com.android.compose.animation.scene.TransitionBuilder fun TransitionBuilder.dreamToShadeTransition(durationScale: Double = 1.0) { toShadeTransition(durationScale = durationScale) toShadeSceneTransition(durationScale = durationScale) } Loading
packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/layout/LockscreenSceneLayout.kt +13 −4 Original line number Diff line number Diff line Loading @@ -19,6 +19,8 @@ package com.android.systemui.keyguard.ui.composable.layout import androidx.compose.runtime.Composable import androidx.compose.runtime.Immutable import androidx.compose.ui.Modifier import androidx.compose.ui.draw.alpha import androidx.compose.ui.graphics.graphicsLayer import androidx.compose.ui.layout.HorizontalAlignmentLine import androidx.compose.ui.layout.Layout import androidx.compose.ui.layout.VerticalAlignmentLine Loading @@ -26,6 +28,8 @@ import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.unit.Constraints import androidx.compose.ui.unit.IntRect import androidx.compose.ui.unit.dp import com.android.compose.animation.scene.ContentScope import com.android.compose.modifiers.thenIf import com.android.systemui.plugins.keyguard.ui.composable.elements.LockscreenElementContext import com.android.systemui.plugins.keyguard.ui.composable.elements.LockscreenElementFactory import com.android.systemui.plugins.keyguard.ui.composable.elements.LockscreenElementFactory.Companion.lockscreenElement Loading Loading @@ -109,7 +113,7 @@ object LockIconAlignmentLines { * as it may be drawn on top of the UDFPS (under display fingerprint sensor) */ @Composable fun LockscreenSceneLayout( fun ContentScope.LockscreenSceneLayout( elementFactory: LockscreenElementFactory, elementContext: LockscreenElementContext, modifier: Modifier = Modifier, Loading @@ -126,7 +130,8 @@ fun LockscreenSceneLayout( elementFactory.lockscreenElement(LockscreenElementKeys.LockIcon, elementContext) elementFactory.lockscreenElement(LockscreenElementKeys.SettingsMenu, elementContext) }, modifier = modifier, // Hide the lock screen elements when an overlay is shown above. modifier = modifier.thenIf(isIdleWithOverlay()) { Modifier.graphicsLayer { alpha = 0f } }, ) { measurables, constraints -> check(measurables.size == 5) val statusBarMeasurable = measurables[0] Loading Loading @@ -154,7 +159,7 @@ fun LockscreenSceneLayout( val lockIconConstrainedMaxHeight = lockIconBounds.top - spacingAboveLockIconPx - statusBarPlaceable.measuredHeight val contentPlaceableOrNull = val contentPlaceable = contentMeasurable.measure( Constraints( minWidth = 0, Loading @@ -171,7 +176,7 @@ fun LockscreenSceneLayout( layout(constraints.maxWidth, constraints.maxHeight) { statusBarPlaceable.place(0, 0) contentPlaceableOrNull?.placeRelative(0, statusBarPlaceable.measuredHeight) contentPlaceable.placeRelative(0, statusBarPlaceable.measuredHeight) bottomAreaPlaceable.place(0, constraints.maxHeight - bottomAreaPlaceable.measuredHeight) lockIconPlaceable.place(x = lockIconBounds.left, y = lockIconBounds.top) settingsMenuPleaceable.placeRelative( Loading @@ -181,3 +186,7 @@ fun LockscreenSceneLayout( } } } private fun ContentScope.isIdleWithOverlay(): Boolean { return !layoutState.isTransitioning() && layoutState.currentOverlays.isNotEmpty() }
packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainerTransitions.kt +35 −12 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ import com.android.systemui.scene.shared.model.TransitionKeys.SlightlyFasterShad 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.bouncerToLockscreenTransition import com.android.systemui.scene.ui.composable.transitions.communalToBouncerTransition import com.android.systemui.scene.ui.composable.transitions.communalToShadeTransition import com.android.systemui.scene.ui.composable.transitions.dreamToBouncerTransition Loading @@ -23,14 +24,16 @@ import com.android.systemui.scene.ui.composable.transitions.dreamToGoneTransitio import com.android.systemui.scene.ui.composable.transitions.dreamToShadeTransition import com.android.systemui.scene.ui.composable.transitions.fromBouncerTransition import com.android.systemui.scene.ui.composable.transitions.goneToQuickSettingsTransition import com.android.systemui.scene.ui.composable.transitions.goneToShadeTransition import com.android.systemui.scene.ui.composable.transitions.goneToShadeSceneTransition import com.android.systemui.scene.ui.composable.transitions.goneToSplitShadeTransition import com.android.systemui.scene.ui.composable.transitions.lockscreenToBouncerTransition import com.android.systemui.scene.ui.composable.transitions.lockscreenToCommunalTransition import com.android.systemui.scene.ui.composable.transitions.lockscreenToDreamTransition import com.android.systemui.scene.ui.composable.transitions.lockscreenToGoneTransition import com.android.systemui.scene.ui.composable.transitions.lockscreenToQuickSettingsTransition import com.android.systemui.scene.ui.composable.transitions.lockscreenToShadeTransition import com.android.systemui.scene.ui.composable.transitions.lockscreenToNotificationsShadeTransition import com.android.systemui.scene.ui.composable.transitions.lockscreenToQuickSettingsOverlayTransition import com.android.systemui.scene.ui.composable.transitions.lockscreenToQuickSettingsSceneTransition import com.android.systemui.scene.ui.composable.transitions.lockscreenToShadeSceneTransition import com.android.systemui.scene.ui.composable.transitions.lockscreenToSplitShadeTransition import com.android.systemui.scene.ui.composable.transitions.shadeToQuickSettingsTransition import com.android.systemui.scene.ui.composable.transitions.toBouncerTransition Loading Loading @@ -75,7 +78,7 @@ class SceneContainerTransitions : SceneContainerTransitionsBuilder { to = Scenes.Shade, cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE, // NOTYPO ) { goneToShadeTransition() goneToShadeSceneTransition() } from( Scenes.Gone, Loading @@ -91,7 +94,7 @@ class SceneContainerTransitions : SceneContainerTransitionsBuilder { key = SlightlyFasterShadeCollapse, cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE, // NOTYPO ) { goneToShadeTransition(durationScale = 0.9) goneToShadeSceneTransition(durationScale = 0.9) } from( Scenes.Gone, Loading @@ -116,7 +119,7 @@ class SceneContainerTransitions : SceneContainerTransitionsBuilder { to = Scenes.Shade, cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE, // NOTYPO ) { lockscreenToShadeTransition() lockscreenToShadeSceneTransition() } from( Scenes.Lockscreen, Loading @@ -133,14 +136,14 @@ class SceneContainerTransitions : SceneContainerTransitionsBuilder { key = SlightlyFasterShadeCollapse, cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE, // NOTYPO ) { lockscreenToShadeTransition(durationScale = 0.9) lockscreenToShadeSceneTransition(durationScale = 0.9) } from( Scenes.Lockscreen, to = Scenes.QuickSettings, cuj = Cuj.CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE, // NOTYPO ) { lockscreenToQuickSettingsTransition() lockscreenToQuickSettingsSceneTransition() } from(Scenes.Lockscreen, to = Scenes.Gone) { lockscreenToGoneTransition() } from( Loading Loading @@ -172,7 +175,7 @@ class SceneContainerTransitions : SceneContainerTransitionsBuilder { to = Scenes.Lockscreen, cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE, // NOTYPO ) { reversed { lockscreenToShadeTransition() } reversed { lockscreenToShadeSceneTransition() } sharedElement(Notifications.Elements.NotificationStackPlaceholder, enabled = false) sharedElement( Notifications.Elements.HeadsUpNotificationPlaceholder, Loading Loading @@ -203,7 +206,7 @@ class SceneContainerTransitions : SceneContainerTransitionsBuilder { from(Scenes.Dream, to = Overlays.Bouncer) { dreamToBouncerTransition() } from(Overlays.Bouncer, to = Scenes.Dream) { fromBouncerTransition() } from(Scenes.Lockscreen, to = Overlays.Bouncer) { lockscreenToBouncerTransition() } from(Overlays.Bouncer, to = Scenes.Lockscreen) { fromBouncerTransition() } from(Overlays.Bouncer, to = Scenes.Lockscreen) { bouncerToLockscreenTransition() } from( Scenes.Lockscreen, to = Overlays.Bouncer, Loading Loading @@ -255,25 +258,45 @@ class SceneContainerTransitions : SceneContainerTransitionsBuilder { revealHaptics = revealHaptics, ) } from( Scenes.Lockscreen, to = Overlays.NotificationsShade, cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE, // NOTYPO ) { lockscreenToNotificationsShadeTransition( shadeExpansionMotion = shadeExpansionMotion, revealHaptics = revealHaptics, ) } from( Scenes.Lockscreen, to = Overlays.NotificationsShade, key = SlightlyFasterShadeCollapse, cuj = Cuj.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE, // NOTYPO ) { toNotificationsShadeTransition( lockscreenToNotificationsShadeTransition( durationScale = 0.9, shadeExpansionMotion = shadeExpansionMotion, revealHaptics = revealHaptics, ) } from( Scenes.Lockscreen, to = Overlays.QuickSettingsShade, cuj = Cuj.CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE, // NOTYPO ) { lockscreenToQuickSettingsOverlayTransition( shadeExpansionMotion = shadeExpansionMotion, revealHaptics = revealHaptics, ) } from( Scenes.Lockscreen, to = Overlays.QuickSettingsShade, key = SlightlyFasterShadeCollapse, cuj = Cuj.CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE, // NOTYPO ) { toQuickSettingsShadeTransition( lockscreenToQuickSettingsOverlayTransition( durationScale = 0.9, shadeExpansionMotion = shadeExpansionMotion, revealHaptics = revealHaptics, Loading
packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/FromBouncerToLockscreenTransition.kt 0 → 100644 +33 −0 Original line number Diff line number Diff line /* * Copyright (C) 2025 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.systemui.scene.ui.composable.transitions import androidx.compose.animation.core.tween import com.android.compose.animation.scene.TransitionBuilder import com.android.systemui.plugins.keyguard.ui.composable.elements.LockscreenElementKeys import kotlin.time.Duration.Companion.milliseconds fun TransitionBuilder.bouncerToLockscreenTransition(durationScale: Double = 1.0) { spec = tween(durationMillis = (DefaultDuration * durationScale).inWholeMilliseconds.toInt()) fromBouncerTransition() fractionRange(start = 0.95f) { fade(LockscreenElementKeys.StatusBar) } fractionRange(start = 0.8f) { fade(LockscreenElementKeys.Root) } } private val DefaultDuration = 500.milliseconds
packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/FromCommunalToShadeTransition.kt +1 −1 Original line number Diff line number Diff line Loading @@ -19,5 +19,5 @@ package com.android.systemui.scene.ui.composable.transitions import com.android.compose.animation.scene.TransitionBuilder fun TransitionBuilder.communalToShadeTransition() { toShadeTransition() toShadeSceneTransition() }
packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/FromDreamToShadeTransition.kt +1 −1 Original line number Diff line number Diff line Loading @@ -19,5 +19,5 @@ package com.android.systemui.scene.ui.composable.transitions import com.android.compose.animation.scene.TransitionBuilder fun TransitionBuilder.dreamToShadeTransition(durationScale: Double = 1.0) { toShadeTransition(durationScale = durationScale) toShadeSceneTransition(durationScale = durationScale) }