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

Commit 1f233234 authored by Matt Pietal's avatar Matt Pietal Committed by Android (Google) Code Review
Browse files

Merge "Support GONE->AOD animation" into main

parents 38324149 2d2326ca
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -766,6 +766,8 @@
    <dimen name="keyguard_clock_switch_y_shift">14dp</dimen>
    <!-- When large clock is showing, offset the smartspace by this amount -->
    <dimen name="keyguard_smartspace_top_offset">12dp</dimen>
    <!-- The amount to translate lockscreen elements on the GONE->AOD transition -->
    <dimen name="keyguard_enter_from_top_translation_y">-100dp</dimen>

    <dimen name="notification_scrim_corner_radius">32dp</dimen>

+10 −6
Original line number Diff line number Diff line
@@ -15,6 +15,8 @@
 */
package com.android.keyguard

import com.android.systemui.keyguard.shared.model.KeyguardState.AOD
import com.android.systemui.keyguard.shared.model.KeyguardState.LOCKSCREEN
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
@@ -37,7 +39,7 @@ import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.dagger.qualifiers.DisplaySpecific
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.flags.FeatureFlags
import com.android.systemui.flags.Flags.DOZING_MIGRATION_1
import com.android.systemui.flags.Flags.MIGRATE_KEYGUARD_STATUS_VIEW
import com.android.systemui.flags.Flags.REGION_SAMPLING
import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor
@@ -61,6 +63,7 @@ import kotlinx.coroutines.DisposableHandle
import kotlinx.coroutines.Job
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.flow.merge
import kotlinx.coroutines.launch
import java.util.Locale
import java.util.TimeZone
@@ -297,7 +300,7 @@ constructor(
        object : KeyguardUpdateMonitorCallback() {
            override fun onKeyguardVisibilityChanged(visible: Boolean) {
                isKeyguardVisible = visible
                if (!featureFlags.isEnabled(DOZING_MIGRATION_1)) {
                if (!featureFlags.isEnabled(MIGRATE_KEYGUARD_STATUS_VIEW)) {
                    if (!isKeyguardVisible) {
                        clock?.run {
                            smallClock.animations.doze(if (isDozing) 1f else 0f)
@@ -342,9 +345,9 @@ constructor(
        keyguardUpdateMonitor.registerCallback(keyguardUpdateMonitorCallback)
        disposableHandle =
            parent.repeatWhenAttached {
                repeatOnLifecycle(Lifecycle.State.STARTED) {
                repeatOnLifecycle(Lifecycle.State.CREATED) {
                    listenForDozing(this)
                    if (featureFlags.isEnabled(DOZING_MIGRATION_1)) {
                    if (featureFlags.isEnabled(MIGRATE_KEYGUARD_STATUS_VIEW)) {
                        listenForDozeAmountTransition(this)
                        listenForAnyStateToAodTransition(this)
                    } else {
@@ -454,8 +457,9 @@ constructor(
    @VisibleForTesting
    internal fun listenForAnyStateToAodTransition(scope: CoroutineScope): Job {
        return scope.launch {
            keyguardTransitionInteractor.anyStateToAodTransition
                .filter { it.transitionState == TransitionState.FINISHED }
            keyguardTransitionInteractor.transitionStepsToState(AOD)
                .filter { it.transitionState == TransitionState.STARTED }
                .filter { it.from != LOCKSCREEN }
                .collect { handleDoze(1f) }
        }
    }
+18 −3
Original line number Diff line number Diff line
@@ -54,6 +54,9 @@ import com.android.systemui.dump.DumpManager;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.flags.Flags;
import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor;
import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor;
import com.android.systemui.keyguard.shared.model.TransitionState;
import com.android.systemui.keyguard.shared.model.TransitionStep;
import com.android.systemui.plugins.ClockController;
import com.android.systemui.power.domain.interactor.PowerInteractor;
import com.android.systemui.power.shared.model.ScreenPowerState;
@@ -102,10 +105,11 @@ public class KeyguardStatusViewController extends ViewController<KeyguardStatusV
    private final Rect mClipBounds = new Rect();
    private final KeyguardInteractor mKeyguardInteractor;
    private final PowerInteractor mPowerInteractor;
    private final KeyguardTransitionInteractor mKeyguardTransitionInteractor;

    private Boolean mSplitShadeEnabled = false;
    private Boolean mStatusViewCentered = true;

    private boolean mGoneToAodTransitionRunning = false;
    private DumpManager mDumpManager;

    private final TransitionListenerAdapter mKeyguardStatusAlignmentTransitionListener =
@@ -135,6 +139,7 @@ public class KeyguardStatusViewController extends ViewController<KeyguardStatusV
            FeatureFlags featureFlags,
            InteractionJankMonitor interactionJankMonitor,
            KeyguardInteractor keyguardInteractor,
            KeyguardTransitionInteractor keyguardTransitionInteractor,
            DumpManager dumpManager,
            PowerInteractor powerInteractor) {
        super(keyguardStatusView);
@@ -144,12 +149,13 @@ public class KeyguardStatusViewController extends ViewController<KeyguardStatusV
        mConfigurationController = configurationController;
        mKeyguardVisibilityHelper = new KeyguardVisibilityHelper(mView, keyguardStateController,
                dozeParameters, screenOffAnimationController, /* animateYPos= */ true,
                logger.getBuffer());
                featureFlags, logger.getBuffer());
        mInteractionJankMonitor = interactionJankMonitor;
        mFeatureFlags = featureFlags;
        mDumpManager = dumpManager;
        mKeyguardInteractor = keyguardInteractor;
        mPowerInteractor = powerInteractor;
        mKeyguardTransitionInteractor = keyguardTransitionInteractor;
    }

    @Override
@@ -199,6 +205,15 @@ public class KeyguardStatusViewController extends ViewController<KeyguardStatusV
                        dozeTimeTick();
                    }
                }, context);

        collectFlow(mView, mKeyguardTransitionInteractor.getGoneToAodTransition(),
                (TransitionStep step) -> {
                    if (step.getTransitionState() == TransitionState.RUNNING) {
                        mGoneToAodTransitionRunning = true;
                    } else {
                        mGoneToAodTransitionRunning = false;
                    }
                }, context);
    }

    public KeyguardStatusView getView() {
@@ -266,7 +281,7 @@ public class KeyguardStatusViewController extends ViewController<KeyguardStatusV
     * Set keyguard status view alpha.
     */
    public void setAlpha(float alpha) {
        if (!mKeyguardVisibilityHelper.isVisibilityAnimating()) {
        if (!mKeyguardVisibilityHelper.isVisibilityAnimating() && !mGoneToAodTransitionRunning) {
            mView.setAlpha(alpha);
        }
    }
+15 −6
Original line number Diff line number Diff line
@@ -23,6 +23,8 @@ import android.util.Property;
import android.view.View;

import com.android.app.animation.Interpolators;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.flags.Flags;
import com.android.systemui.log.LogBuffer;
import com.android.systemui.log.core.LogLevel;
import com.android.systemui.statusbar.StatusBarState;
@@ -53,6 +55,7 @@ public class KeyguardVisibilityHelper {
    private boolean mKeyguardViewVisibilityAnimating;
    private boolean mLastOccludedState = false;
    private final AnimationProperties mAnimationProperties = new AnimationProperties();
    private final FeatureFlags mFeatureFlags;
    private final LogBuffer mLogBuffer;

    public KeyguardVisibilityHelper(View view,
@@ -60,12 +63,14 @@ public class KeyguardVisibilityHelper {
            DozeParameters dozeParameters,
            ScreenOffAnimationController screenOffAnimationController,
            boolean animateYPos,
            FeatureFlags featureFlags,
            LogBuffer logBuffer) {
        mView = view;
        mKeyguardStateController = keyguardStateController;
        mDozeParameters = dozeParameters;
        mScreenOffAnimationController = screenOffAnimationController;
        mAnimateYPos = animateYPos;
        mFeatureFlags = featureFlags;
        mLogBuffer = logBuffer;
    }

@@ -162,13 +167,17 @@ public class KeyguardVisibilityHelper {
                        animProps,
                        true /* animate */);
            } else if (mScreenOffAnimationController.shouldAnimateInKeyguard()) {
                if (mFeatureFlags.isEnabled(Flags.MIGRATE_KEYGUARD_STATUS_VIEW)) {
                    log("Using GoneToAodTransition");
                    mKeyguardViewVisibilityAnimating = false;
                } else {
                    log("ScreenOff transition");
                    mKeyguardViewVisibilityAnimating = true;

                // Ask the screen off animation controller to animate the keyguard visibility for us
                // since it may need to be cancelled due to keyguard lifecycle events.
                mScreenOffAnimationController.animateInKeyguard(
                        mView, mSetVisibleEndRunnable);
                    // Ask the screen off animation controller to animate the keyguard visibility
                    // for us since it may need to be cancelled due to keyguard lifecycle events.
                    mScreenOffAnimationController.animateInKeyguard(mView, mSetVisibleEndRunnable);
                }
            } else {
                log("Direct set Visibility to VISIBLE");
                mView.setVisibility(View.VISIBLE);
+3 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ package com.android.systemui.keyguard
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import com.android.internal.jank.InteractionJankMonitor
import com.android.keyguard.KeyguardStatusView
import com.android.keyguard.KeyguardStatusViewController
import com.android.keyguard.LockIconView
@@ -71,6 +72,7 @@ constructor(
    private val keyguardIndicationController: KeyguardIndicationController,
    private val lockIconViewController: LockIconViewController,
    private val shadeInteractor: ShadeInteractor,
    private val interactionJankMonitor: InteractionJankMonitor
) : CoreStartable {

    private var rootViewHandle: DisposableHandle? = null
@@ -140,6 +142,7 @@ constructor(
                keyguardStateController,
                shadeInteractor,
                { keyguardStatusViewController!!.getClockController() },
                interactionJankMonitor,
            )
    }

Loading