Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c27720c0 authored by burakov's avatar burakov Committed by Danny Burakov
Browse files

[Dual Shade] Remove the distance calculation from shade transition spec.

For an undetermined reason, the calculation returns 0 sometimes which
causes b/393079108. Since this distance will be soon made redundant by
switching to `verticalContainerReveal()`, it's better to remove this
calculation altogether rather than investigate it.

Bug: 393079108
Test: Unit tests still pass.
Test: Manually verified shade transitions on both narrow and large
 screens.
Flag: com.android.systemui.scene_container
Change-Id: I323d3a16e52ef438248e794835c82cb6abca9e7b
parent 2c50fbd4
Loading
Loading
Loading
Loading
+0 −14
Original line number Diff line number Diff line
@@ -17,11 +17,8 @@
package com.android.systemui.scene.ui.composable.transitions

import androidx.compose.animation.core.tween
import com.android.compose.animation.scene.ContentKey
import com.android.compose.animation.scene.Edge
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.keyguard.ui.composable.blueprint.ClockElementKeys
import com.android.systemui.notifications.ui.composable.Notifications
import com.android.systemui.notifications.ui.composable.NotificationsShade
@@ -31,9 +28,6 @@ import kotlin.time.Duration.Companion.milliseconds

fun TransitionBuilder.toNotificationsShadeTransition(durationScale: Double = 1.0) {
    spec = tween(durationMillis = (DefaultDuration * durationScale).inWholeMilliseconds.toInt())
    distance = UserActionDistance { _, shadeContentKey, _ ->
        calculateShadePanelTargetPositionY(shadeContentKey)
    }

    // Ensure the clock isn't clipped by the shade outline during the transition from lockscreen.
    sharedElement(
@@ -50,12 +44,4 @@ fun TransitionBuilder.toNotificationsShadeTransition(durationScale: Double = 1.0
    fractionRange(start = .5f) { fade(Notifications.Elements.NotificationScrim) }
}

/** Returns the Y position of the bottom of the shade container panel within [shadeOverlayKey]. */
fun UserActionDistanceScope.calculateShadePanelTargetPositionY(shadeOverlayKey: ContentKey): Float {
    val marginTop = OverlayShade.Elements.Panel.targetOffset(shadeOverlayKey)?.y ?: 0f
    val panelHeight =
        OverlayShade.Elements.Panel.targetSize(shadeOverlayKey)?.height?.toFloat() ?: 0f
    return marginTop + panelHeight
}

private val DefaultDuration = 300.milliseconds
+0 −5
Original line number Diff line number Diff line
@@ -19,18 +19,13 @@ package com.android.systemui.scene.ui.composable.transitions
import androidx.compose.animation.core.tween
import com.android.compose.animation.scene.Edge
import com.android.compose.animation.scene.TransitionBuilder
import com.android.compose.animation.scene.UserActionDistance
import com.android.systemui.shade.ui.composable.OverlayShade
import kotlin.time.Duration.Companion.milliseconds

fun TransitionBuilder.toQuickSettingsShadeTransition(durationScale: Double = 1.0) {
    spec = tween(durationMillis = (DefaultDuration * durationScale).inWholeMilliseconds.toInt())
    distance = UserActionDistance { _, shadeContentKey, _ ->
        calculateShadePanelTargetPositionY(shadeContentKey)
    }

    translate(OverlayShade.Elements.Panel, Edge.Top)

    fractionRange(end = .5f) { fade(OverlayShade.Elements.Scrim) }
}