Loading packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/Notifications.kt +27 −25 Original line number Original line Diff line number Diff line Loading @@ -68,12 +68,14 @@ import com.android.compose.animation.scene.ElementKey import com.android.compose.animation.scene.NestedScrollBehavior import com.android.compose.animation.scene.NestedScrollBehavior import com.android.compose.animation.scene.SceneScope import com.android.compose.animation.scene.SceneScope import com.android.compose.modifiers.height import com.android.compose.modifiers.height import com.android.compose.modifiers.thenIf import com.android.systemui.common.ui.compose.windowinsets.LocalRawScreenHeight import com.android.systemui.common.ui.compose.windowinsets.LocalRawScreenHeight import com.android.systemui.common.ui.compose.windowinsets.LocalScreenCornerRadius import com.android.systemui.common.ui.compose.windowinsets.LocalScreenCornerRadius import com.android.systemui.res.R import com.android.systemui.res.R import com.android.systemui.scene.session.ui.composable.SaveableSession import com.android.systemui.scene.session.ui.composable.SaveableSession import com.android.systemui.scene.session.ui.composable.rememberSession import com.android.systemui.scene.session.ui.composable.rememberSession import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.shade.shared.model.ShadeMode import com.android.systemui.shade.ui.composable.ShadeHeader import com.android.systemui.shade.ui.composable.ShadeHeader import com.android.systemui.statusbar.notification.stack.shared.model.ShadeScrimBounds import com.android.systemui.statusbar.notification.stack.shared.model.ShadeScrimBounds import com.android.systemui.statusbar.notification.stack.shared.model.ShadeScrimRounding import com.android.systemui.statusbar.notification.stack.shared.model.ShadeScrimRounding Loading Loading @@ -165,6 +167,7 @@ fun SceneScope.NotificationScrollingStack( viewModel: NotificationsPlaceholderViewModel, viewModel: NotificationsPlaceholderViewModel, maxScrimTop: () -> Float, maxScrimTop: () -> Float, shouldPunchHoleBehindScrim: Boolean, shouldPunchHoleBehindScrim: Boolean, shadeMode: ShadeMode, modifier: Modifier = Modifier, modifier: Modifier = Modifier, ) { ) { val coroutineScope = rememberCoroutineScope() val coroutineScope = rememberCoroutineScope() Loading Loading @@ -242,6 +245,27 @@ fun SceneScope.NotificationScrollingStack( } } } } val scrimNestedScrollConnection = shadeSession.rememberSession( scrimOffset, maxScrimTop, minScrimTop, isCurrentGestureOverscroll, ) { NotificationScrimNestedScrollConnection( scrimOffset = { scrimOffset.value }, snapScrimOffset = { value -> coroutineScope.launch { scrimOffset.snapTo(value) } }, animateScrimOffset = { value -> coroutineScope.launch { scrimOffset.animateTo(value) } }, minScrimOffset = minScrimOffset, maxScrimOffset = 0f, contentHeight = { stackHeight.intValue.toFloat() }, minVisibleScrimHeight = minVisibleScrimHeight, isCurrentGestureOverscroll = { isCurrentGestureOverscroll.value }, ) } Box( Box( modifier = modifier = modifier modifier Loading Loading @@ -316,31 +340,9 @@ fun SceneScope.NotificationScrollingStack( topBehavior = NestedScrollBehavior.EdgeWithPreview, topBehavior = NestedScrollBehavior.EdgeWithPreview, isExternalOverscrollGesture = { isCurrentGestureOverscroll.value } isExternalOverscrollGesture = { isCurrentGestureOverscroll.value } ) ) .nestedScroll( .thenIf(shadeMode == ShadeMode.Single) { shadeSession.rememberSession( Modifier.nestedScroll(scrimNestedScrollConnection) scrimOffset, maxScrimTop, minScrimTop, isCurrentGestureOverscroll, ) { NotificationScrimNestedScrollConnection( scrimOffset = { scrimOffset.value }, snapScrimOffset = { value -> coroutineScope.launch { scrimOffset.snapTo(value) } }, animateScrimOffset = { value -> coroutineScope.launch { scrimOffset.animateTo(value) } }, minScrimOffset = minScrimOffset, maxScrimOffset = 0f, contentHeight = { stackHeight.intValue.toFloat() }, minVisibleScrimHeight = minVisibleScrimHeight, isCurrentGestureOverscroll = { isCurrentGestureOverscroll.value }, ) } } ) .verticalScroll(scrollState) .verticalScroll(scrollState) .fillMaxWidth() .fillMaxWidth() .notificationStackHeight( .notificationStackHeight( Loading packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettingsScene.kt +2 −0 Original line number Original line Diff line number Diff line Loading @@ -86,6 +86,7 @@ import com.android.systemui.res.R import com.android.systemui.scene.session.ui.composable.SaveableSession import com.android.systemui.scene.session.ui.composable.SaveableSession import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.scene.ui.composable.ComposableScene import com.android.systemui.scene.ui.composable.ComposableScene import com.android.systemui.shade.shared.model.ShadeMode import com.android.systemui.shade.ui.composable.CollapsedShadeHeader import com.android.systemui.shade.ui.composable.CollapsedShadeHeader import com.android.systemui.shade.ui.composable.ExpandedShadeHeader import com.android.systemui.shade.ui.composable.ExpandedShadeHeader import com.android.systemui.shade.ui.composable.Shade import com.android.systemui.shade.ui.composable.Shade Loading Loading @@ -370,6 +371,7 @@ private fun SceneScope.QuickSettingsScene( shadeSession = shadeSession, shadeSession = shadeSession, maxScrimTop = { screenHeight }, maxScrimTop = { screenHeight }, shouldPunchHoleBehindScrim = shouldPunchHoleBehindScrim, shouldPunchHoleBehindScrim = shouldPunchHoleBehindScrim, shadeMode = ShadeMode.Single, modifier = modifier = Modifier.fillMaxWidth().offset { IntOffset(x = 0, y = screenHeight.roundToInt()) }, Modifier.fillMaxWidth().offset { IntOffset(x = 0, y = screenHeight.roundToInt()) }, ) ) Loading packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainerTransitions.kt +10 −3 Original line number Original line Diff line number Diff line Loading @@ -5,9 +5,8 @@ import com.android.compose.animation.scene.transitions import com.android.systemui.bouncer.ui.composable.Bouncer import com.android.systemui.bouncer.ui.composable.Bouncer import com.android.systemui.notifications.ui.composable.Notifications import com.android.systemui.notifications.ui.composable.Notifications import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.scene.shared.model.TransitionKeys.CollapseShadeInstantly import com.android.systemui.scene.shared.model.TransitionKeys.GoneToSplitShade import com.android.systemui.scene.shared.model.TransitionKeys.SlightlyFasterShadeCollapse 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.bouncerToGoneTransition import com.android.systemui.scene.ui.composable.transitions.goneToQuickSettingsTransition 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.goneToShadeTransition Loading @@ -17,6 +16,7 @@ import com.android.systemui.scene.ui.composable.transitions.lockscreenToCommunal import com.android.systemui.scene.ui.composable.transitions.lockscreenToGoneTransition 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.lockscreenToQuickSettingsTransition import com.android.systemui.scene.ui.composable.transitions.lockscreenToShadeTransition import com.android.systemui.scene.ui.composable.transitions.lockscreenToShadeTransition 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.shadeToQuickSettingsTransition import com.android.systemui.shade.ui.composable.Shade import com.android.systemui.shade.ui.composable.Shade Loading @@ -41,7 +41,7 @@ val SceneContainerTransitions = transitions { from( from( Scenes.Gone, Scenes.Gone, to = Scenes.Shade, to = Scenes.Shade, key = GoneToSplitShade, key = ToSplitShade, ) { ) { goneToSplitShadeTransition() goneToSplitShadeTransition() } } Loading @@ -56,6 +56,13 @@ val SceneContainerTransitions = transitions { from(Scenes.Lockscreen, to = Scenes.Bouncer) { lockscreenToBouncerTransition() } from(Scenes.Lockscreen, to = Scenes.Bouncer) { lockscreenToBouncerTransition() } from(Scenes.Lockscreen, to = Scenes.Communal) { lockscreenToCommunalTransition() } from(Scenes.Lockscreen, to = Scenes.Communal) { lockscreenToCommunalTransition() } from(Scenes.Lockscreen, to = Scenes.Shade) { lockscreenToShadeTransition() } from(Scenes.Lockscreen, to = Scenes.Shade) { lockscreenToShadeTransition() } from( Scenes.Lockscreen, to = Scenes.Shade, key = ToSplitShade, ) { lockscreenToSplitShadeTransition() } from( from( Scenes.Lockscreen, Scenes.Lockscreen, to = Scenes.Shade, to = Scenes.Shade, Loading packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/FromGoneToSplitShadeTransition.kt +1 −41 Original line number Original line Diff line number Diff line Loading @@ -16,50 +16,10 @@ package com.android.systemui.scene.ui.composable.transitions package com.android.systemui.scene.ui.composable.transitions import androidx.compose.animation.core.Spring import androidx.compose.animation.core.spring import androidx.compose.animation.core.tween import androidx.compose.foundation.gestures.Orientation import androidx.compose.ui.unit.IntSize import com.android.compose.animation.scene.TransitionBuilder import com.android.compose.animation.scene.TransitionBuilder import com.android.compose.animation.scene.UserActionDistance import com.android.compose.animation.scene.UserActionDistanceScope import com.android.systemui.notifications.ui.composable.Notifications import com.android.systemui.qs.ui.composable.QuickSettings import com.android.systemui.shade.ui.composable.Shade import com.android.systemui.shade.ui.composable.ShadeHeader import kotlin.time.Duration.Companion.milliseconds fun TransitionBuilder.goneToSplitShadeTransition( fun TransitionBuilder.goneToSplitShadeTransition( durationScale: Double = 1.0, durationScale: Double = 1.0, ) { ) { spec = tween(durationMillis = (DefaultDuration * durationScale).inWholeMilliseconds.toInt()) toSplitShadeTransition(durationScale) swipeSpec = spring( stiffness = Spring.StiffnessMediumLow, visibilityThreshold = Shade.Dimensions.ScrimVisibilityThreshold, ) distance = object : UserActionDistance { override fun UserActionDistanceScope.absoluteDistance( fromSceneSize: IntSize, orientation: Orientation, ): Float { return fromSceneSize.height.toFloat() * 2 / 3f } } } fractionRange(end = .33f) { fade(Shade.Elements.BackgroundScrim) } fractionRange(start = .33f) { fade(ShadeHeader.Elements.Clock) fade(ShadeHeader.Elements.CollapsedContentStart) fade(ShadeHeader.Elements.CollapsedContentEnd) fade(ShadeHeader.Elements.PrivacyChip) fade(QuickSettings.Elements.SplitShadeQuickSettings) fade(QuickSettings.Elements.FooterActions) fade(Notifications.Elements.NotificationScrim) } } private val DefaultDuration = 500.milliseconds packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/FromLockscreenToSplitShadeTransition.kt 0 → 100644 +25 −0 Original line number Original line Diff line number Diff line /* * Copyright (C) 2024 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 com.android.compose.animation.scene.TransitionBuilder fun TransitionBuilder.lockscreenToSplitShadeTransition( durationScale: Double = 1.0, ) { toSplitShadeTransition(durationScale = durationScale) } Loading
packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/Notifications.kt +27 −25 Original line number Original line Diff line number Diff line Loading @@ -68,12 +68,14 @@ import com.android.compose.animation.scene.ElementKey import com.android.compose.animation.scene.NestedScrollBehavior import com.android.compose.animation.scene.NestedScrollBehavior import com.android.compose.animation.scene.SceneScope import com.android.compose.animation.scene.SceneScope import com.android.compose.modifiers.height import com.android.compose.modifiers.height import com.android.compose.modifiers.thenIf import com.android.systemui.common.ui.compose.windowinsets.LocalRawScreenHeight import com.android.systemui.common.ui.compose.windowinsets.LocalRawScreenHeight import com.android.systemui.common.ui.compose.windowinsets.LocalScreenCornerRadius import com.android.systemui.common.ui.compose.windowinsets.LocalScreenCornerRadius import com.android.systemui.res.R import com.android.systemui.res.R import com.android.systemui.scene.session.ui.composable.SaveableSession import com.android.systemui.scene.session.ui.composable.SaveableSession import com.android.systemui.scene.session.ui.composable.rememberSession import com.android.systemui.scene.session.ui.composable.rememberSession import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.shade.shared.model.ShadeMode import com.android.systemui.shade.ui.composable.ShadeHeader import com.android.systemui.shade.ui.composable.ShadeHeader import com.android.systemui.statusbar.notification.stack.shared.model.ShadeScrimBounds import com.android.systemui.statusbar.notification.stack.shared.model.ShadeScrimBounds import com.android.systemui.statusbar.notification.stack.shared.model.ShadeScrimRounding import com.android.systemui.statusbar.notification.stack.shared.model.ShadeScrimRounding Loading Loading @@ -165,6 +167,7 @@ fun SceneScope.NotificationScrollingStack( viewModel: NotificationsPlaceholderViewModel, viewModel: NotificationsPlaceholderViewModel, maxScrimTop: () -> Float, maxScrimTop: () -> Float, shouldPunchHoleBehindScrim: Boolean, shouldPunchHoleBehindScrim: Boolean, shadeMode: ShadeMode, modifier: Modifier = Modifier, modifier: Modifier = Modifier, ) { ) { val coroutineScope = rememberCoroutineScope() val coroutineScope = rememberCoroutineScope() Loading Loading @@ -242,6 +245,27 @@ fun SceneScope.NotificationScrollingStack( } } } } val scrimNestedScrollConnection = shadeSession.rememberSession( scrimOffset, maxScrimTop, minScrimTop, isCurrentGestureOverscroll, ) { NotificationScrimNestedScrollConnection( scrimOffset = { scrimOffset.value }, snapScrimOffset = { value -> coroutineScope.launch { scrimOffset.snapTo(value) } }, animateScrimOffset = { value -> coroutineScope.launch { scrimOffset.animateTo(value) } }, minScrimOffset = minScrimOffset, maxScrimOffset = 0f, contentHeight = { stackHeight.intValue.toFloat() }, minVisibleScrimHeight = minVisibleScrimHeight, isCurrentGestureOverscroll = { isCurrentGestureOverscroll.value }, ) } Box( Box( modifier = modifier = modifier modifier Loading Loading @@ -316,31 +340,9 @@ fun SceneScope.NotificationScrollingStack( topBehavior = NestedScrollBehavior.EdgeWithPreview, topBehavior = NestedScrollBehavior.EdgeWithPreview, isExternalOverscrollGesture = { isCurrentGestureOverscroll.value } isExternalOverscrollGesture = { isCurrentGestureOverscroll.value } ) ) .nestedScroll( .thenIf(shadeMode == ShadeMode.Single) { shadeSession.rememberSession( Modifier.nestedScroll(scrimNestedScrollConnection) scrimOffset, maxScrimTop, minScrimTop, isCurrentGestureOverscroll, ) { NotificationScrimNestedScrollConnection( scrimOffset = { scrimOffset.value }, snapScrimOffset = { value -> coroutineScope.launch { scrimOffset.snapTo(value) } }, animateScrimOffset = { value -> coroutineScope.launch { scrimOffset.animateTo(value) } }, minScrimOffset = minScrimOffset, maxScrimOffset = 0f, contentHeight = { stackHeight.intValue.toFloat() }, minVisibleScrimHeight = minVisibleScrimHeight, isCurrentGestureOverscroll = { isCurrentGestureOverscroll.value }, ) } } ) .verticalScroll(scrollState) .verticalScroll(scrollState) .fillMaxWidth() .fillMaxWidth() .notificationStackHeight( .notificationStackHeight( Loading
packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettingsScene.kt +2 −0 Original line number Original line Diff line number Diff line Loading @@ -86,6 +86,7 @@ import com.android.systemui.res.R import com.android.systemui.scene.session.ui.composable.SaveableSession import com.android.systemui.scene.session.ui.composable.SaveableSession import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.scene.ui.composable.ComposableScene import com.android.systemui.scene.ui.composable.ComposableScene import com.android.systemui.shade.shared.model.ShadeMode import com.android.systemui.shade.ui.composable.CollapsedShadeHeader import com.android.systemui.shade.ui.composable.CollapsedShadeHeader import com.android.systemui.shade.ui.composable.ExpandedShadeHeader import com.android.systemui.shade.ui.composable.ExpandedShadeHeader import com.android.systemui.shade.ui.composable.Shade import com.android.systemui.shade.ui.composable.Shade Loading Loading @@ -370,6 +371,7 @@ private fun SceneScope.QuickSettingsScene( shadeSession = shadeSession, shadeSession = shadeSession, maxScrimTop = { screenHeight }, maxScrimTop = { screenHeight }, shouldPunchHoleBehindScrim = shouldPunchHoleBehindScrim, shouldPunchHoleBehindScrim = shouldPunchHoleBehindScrim, shadeMode = ShadeMode.Single, modifier = modifier = Modifier.fillMaxWidth().offset { IntOffset(x = 0, y = screenHeight.roundToInt()) }, Modifier.fillMaxWidth().offset { IntOffset(x = 0, y = screenHeight.roundToInt()) }, ) ) Loading
packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainerTransitions.kt +10 −3 Original line number Original line Diff line number Diff line Loading @@ -5,9 +5,8 @@ import com.android.compose.animation.scene.transitions import com.android.systemui.bouncer.ui.composable.Bouncer import com.android.systemui.bouncer.ui.composable.Bouncer import com.android.systemui.notifications.ui.composable.Notifications import com.android.systemui.notifications.ui.composable.Notifications import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.scene.shared.model.TransitionKeys.CollapseShadeInstantly import com.android.systemui.scene.shared.model.TransitionKeys.GoneToSplitShade import com.android.systemui.scene.shared.model.TransitionKeys.SlightlyFasterShadeCollapse 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.bouncerToGoneTransition import com.android.systemui.scene.ui.composable.transitions.goneToQuickSettingsTransition 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.goneToShadeTransition Loading @@ -17,6 +16,7 @@ import com.android.systemui.scene.ui.composable.transitions.lockscreenToCommunal import com.android.systemui.scene.ui.composable.transitions.lockscreenToGoneTransition 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.lockscreenToQuickSettingsTransition import com.android.systemui.scene.ui.composable.transitions.lockscreenToShadeTransition import com.android.systemui.scene.ui.composable.transitions.lockscreenToShadeTransition 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.shadeToQuickSettingsTransition import com.android.systemui.shade.ui.composable.Shade import com.android.systemui.shade.ui.composable.Shade Loading @@ -41,7 +41,7 @@ val SceneContainerTransitions = transitions { from( from( Scenes.Gone, Scenes.Gone, to = Scenes.Shade, to = Scenes.Shade, key = GoneToSplitShade, key = ToSplitShade, ) { ) { goneToSplitShadeTransition() goneToSplitShadeTransition() } } Loading @@ -56,6 +56,13 @@ val SceneContainerTransitions = transitions { from(Scenes.Lockscreen, to = Scenes.Bouncer) { lockscreenToBouncerTransition() } from(Scenes.Lockscreen, to = Scenes.Bouncer) { lockscreenToBouncerTransition() } from(Scenes.Lockscreen, to = Scenes.Communal) { lockscreenToCommunalTransition() } from(Scenes.Lockscreen, to = Scenes.Communal) { lockscreenToCommunalTransition() } from(Scenes.Lockscreen, to = Scenes.Shade) { lockscreenToShadeTransition() } from(Scenes.Lockscreen, to = Scenes.Shade) { lockscreenToShadeTransition() } from( Scenes.Lockscreen, to = Scenes.Shade, key = ToSplitShade, ) { lockscreenToSplitShadeTransition() } from( from( Scenes.Lockscreen, Scenes.Lockscreen, to = Scenes.Shade, to = Scenes.Shade, Loading
packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/FromGoneToSplitShadeTransition.kt +1 −41 Original line number Original line Diff line number Diff line Loading @@ -16,50 +16,10 @@ package com.android.systemui.scene.ui.composable.transitions package com.android.systemui.scene.ui.composable.transitions import androidx.compose.animation.core.Spring import androidx.compose.animation.core.spring import androidx.compose.animation.core.tween import androidx.compose.foundation.gestures.Orientation import androidx.compose.ui.unit.IntSize import com.android.compose.animation.scene.TransitionBuilder import com.android.compose.animation.scene.TransitionBuilder import com.android.compose.animation.scene.UserActionDistance import com.android.compose.animation.scene.UserActionDistanceScope import com.android.systemui.notifications.ui.composable.Notifications import com.android.systemui.qs.ui.composable.QuickSettings import com.android.systemui.shade.ui.composable.Shade import com.android.systemui.shade.ui.composable.ShadeHeader import kotlin.time.Duration.Companion.milliseconds fun TransitionBuilder.goneToSplitShadeTransition( fun TransitionBuilder.goneToSplitShadeTransition( durationScale: Double = 1.0, durationScale: Double = 1.0, ) { ) { spec = tween(durationMillis = (DefaultDuration * durationScale).inWholeMilliseconds.toInt()) toSplitShadeTransition(durationScale) swipeSpec = spring( stiffness = Spring.StiffnessMediumLow, visibilityThreshold = Shade.Dimensions.ScrimVisibilityThreshold, ) distance = object : UserActionDistance { override fun UserActionDistanceScope.absoluteDistance( fromSceneSize: IntSize, orientation: Orientation, ): Float { return fromSceneSize.height.toFloat() * 2 / 3f } } } fractionRange(end = .33f) { fade(Shade.Elements.BackgroundScrim) } fractionRange(start = .33f) { fade(ShadeHeader.Elements.Clock) fade(ShadeHeader.Elements.CollapsedContentStart) fade(ShadeHeader.Elements.CollapsedContentEnd) fade(ShadeHeader.Elements.PrivacyChip) fade(QuickSettings.Elements.SplitShadeQuickSettings) fade(QuickSettings.Elements.FooterActions) fade(Notifications.Elements.NotificationScrim) } } private val DefaultDuration = 500.milliseconds
packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/FromLockscreenToSplitShadeTransition.kt 0 → 100644 +25 −0 Original line number Original line Diff line number Diff line /* * Copyright (C) 2024 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 com.android.compose.animation.scene.TransitionBuilder fun TransitionBuilder.lockscreenToSplitShadeTransition( durationScale: Double = 1.0, ) { toSplitShadeTransition(durationScale = durationScale) }