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

Commit eeb8a309 authored by Matt Pietal's avatar Matt Pietal
Browse files

Enable super smooth GONE->AOD (canceled)->LOCKSCREEN transitions

This adds special logic for notifications, which should not be visible
on AOD but need to fade in nicely once AOD->LOCKSCREEN starts.

Also, minor cleanup for transitions to start from their current value

Bug: 322198222
Fixes: 322197793
Test: atest com.android.systemui.keyguard
Flag: ACONFIG com.android.systemui.migrate_clocks_to_blueprint
DEVELOPMENT

Change-Id: Ic60430b1fe5ea15821f6fa00cd05c4aaa9863662
parent 43c71956
Loading
Loading
Loading
Loading
+10 −15
Original line number Diff line number Diff line
@@ -64,26 +64,21 @@ constructor(

    /** Ensure alpha is set to be visible */
    fun lockscreenAlpha(viewState: ViewStateAccessor): Flow<Float> {
        var startAlpha: Float? = null
        var startAlpha = 1f
        return transitionAnimation.sharedFlow(
            duration = 500.milliseconds,
            onStep = {
                if (startAlpha == null) {
                    startAlpha = viewState.alpha()
                }
                MathUtils.lerp(startAlpha!!, 1f, it)
            },
            onFinish = {
                startAlpha = null
                1f
            },
            onCancel = {
                startAlpha = null
                1f
            },
            onStart = { startAlpha = viewState.alpha() },
            onStep = { MathUtils.lerp(startAlpha, 1f, it) },
        )
    }

    val notificationAlpha: Flow<Float> =
        transitionAnimation.sharedFlow(
            duration = 500.milliseconds,
            onStep = { it },
            onCancel = { 1f },
        )

    val shortcutsAlpha: Flow<Float> =
        transitionAnimation.sharedFlow(
            duration = 167.milliseconds,
+8 −2
Original line number Diff line number Diff line
@@ -55,11 +55,18 @@ constructor(
            duration = 500.milliseconds,
            onStep = { translatePx + it * -translatePx },
            onFinish = { 0f },
            onCancel = { 0f },
            interpolator = EMPHASIZED_DECELERATE,
        )
    }

    val notificationAlpha: Flow<Float> =
        transitionAnimation.sharedFlow(
            duration = 200.milliseconds,
            onStep = { 1f - it },
            // Needs to be 1f in order for HUNs to appear on AOD
            onFinish = { 1f },
        )

    /** alpha animation upon entering AOD */
    val enterFromTopAnimationAlpha: Flow<Float> =
        transitionAnimation.sharedFlow(
@@ -67,7 +74,6 @@ constructor(
            duration = 400.milliseconds,
            onStep = { it },
            onFinish = { 1f },
            onCancel = { 1f },
        )
    val deviceEntryBackgroundViewAlpha: Flow<Float> =
        transitionAnimation.immediatelyTransitionTo(0f)
+5 −15
Original line number Diff line number Diff line
@@ -55,23 +55,13 @@ constructor(
        )

    fun lockscreenAlpha(viewState: ViewStateAccessor): Flow<Float> {
        var startAlpha: Float? = null
        var startAlpha = 1f
        return transitionAnimation.sharedFlow(
            duration = 200.milliseconds,
            onStep = {
                if (startAlpha == null) {
                    startAlpha = viewState.alpha()
                }
                MathUtils.lerp(startAlpha!!, 0f, it)
            },
            onFinish = {
                startAlpha = null
                0f
            },
            onCancel = {
                startAlpha = null
                1f
            },
            onStart = { startAlpha = viewState.alpha() },
            onStep = { MathUtils.lerp(startAlpha, 0f, it) },
            onFinish = { 0f },
            onCancel = { 1f },
        )
    }

+4 −1
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ import com.android.systemui.keyguard.ui.viewmodel.BurnInParameters
import com.android.systemui.keyguard.ui.viewmodel.DozingToLockscreenTransitionViewModel
import com.android.systemui.keyguard.ui.viewmodel.DreamingToLockscreenTransitionViewModel
import com.android.systemui.keyguard.ui.viewmodel.GlanceableHubToLockscreenTransitionViewModel
import com.android.systemui.keyguard.ui.viewmodel.GoneToAodTransitionViewModel
import com.android.systemui.keyguard.ui.viewmodel.GoneToDozingTransitionViewModel
import com.android.systemui.keyguard.ui.viewmodel.GoneToDreamingTransitionViewModel
import com.android.systemui.keyguard.ui.viewmodel.LockscreenToDreamingTransitionViewModel
@@ -98,6 +99,7 @@ constructor(
    private val dreamingToLockscreenTransitionViewModel: DreamingToLockscreenTransitionViewModel,
    private val glanceableHubToLockscreenTransitionViewModel:
        GlanceableHubToLockscreenTransitionViewModel,
    private val goneToAodTransitionViewModel: GoneToAodTransitionViewModel,
    private val goneToDozingTransitionViewModel: GoneToDozingTransitionViewModel,
    private val goneToDreamingTransitionViewModel: GoneToDreamingTransitionViewModel,
    private val lockscreenToDreamingTransitionViewModel: LockscreenToDreamingTransitionViewModel,
@@ -304,9 +306,10 @@ constructor(
        val alphaTransitions =
            merge(
                alternateBouncerToGoneTransitionViewModel.lockscreenAlpha,
                aodToLockscreenTransitionViewModel.lockscreenAlpha(viewState),
                aodToLockscreenTransitionViewModel.notificationAlpha,
                dozingToLockscreenTransitionViewModel.lockscreenAlpha,
                dreamingToLockscreenTransitionViewModel.lockscreenAlpha,
                goneToAodTransitionViewModel.notificationAlpha,
                goneToDreamingTransitionViewModel.lockscreenAlpha,
                goneToDozingTransitionViewModel.lockscreenAlpha,
                lockscreenToDreamingTransitionViewModel.lockscreenAlpha,
+4 −0
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import com.android.systemui.keyguard.ui.viewmodel.aodToLockscreenTransitionViewM
import com.android.systemui.keyguard.ui.viewmodel.dozingToLockscreenTransitionViewModel
import com.android.systemui.keyguard.ui.viewmodel.dreamingToLockscreenTransitionViewModel
import com.android.systemui.keyguard.ui.viewmodel.glanceableHubToLockscreenTransitionViewModel
import com.android.systemui.keyguard.ui.viewmodel.goneToAodTransitionViewModel
import com.android.systemui.keyguard.ui.viewmodel.goneToDozingTransitionViewModel
import com.android.systemui.keyguard.ui.viewmodel.goneToDreamingTransitionViewModel
import com.android.systemui.keyguard.ui.viewmodel.lockscreenToDreamingTransitionViewModel
@@ -41,7 +42,9 @@ import com.android.systemui.kosmos.Kosmos.Fixture
import com.android.systemui.kosmos.applicationCoroutineScope
import com.android.systemui.shade.domain.interactor.shadeInteractor
import com.android.systemui.statusbar.notification.stack.domain.interactor.sharedNotificationContainerInteractor
import kotlinx.coroutines.ExperimentalCoroutinesApi

@OptIn(ExperimentalCoroutinesApi::class)
val Kosmos.sharedNotificationContainerViewModel by Fixture {
    SharedNotificationContainerViewModel(
        interactor = sharedNotificationContainerInteractor,
@@ -54,6 +57,7 @@ val Kosmos.sharedNotificationContainerViewModel by Fixture {
        aodToLockscreenTransitionViewModel = aodToLockscreenTransitionViewModel,
        dozingToLockscreenTransitionViewModel = dozingToLockscreenTransitionViewModel,
        dreamingToLockscreenTransitionViewModel = dreamingToLockscreenTransitionViewModel,
        goneToAodTransitionViewModel = goneToAodTransitionViewModel,
        goneToDozingTransitionViewModel = goneToDozingTransitionViewModel,
        goneToDreamingTransitionViewModel = goneToDreamingTransitionViewModel,
        glanceableHubToLockscreenTransitionViewModel = glanceableHubToLockscreenTransitionViewModel,