Loading packages/SystemUI/res/values/dimens.xml +2 −0 Original line number Diff line number Diff line Loading @@ -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> Loading packages/SystemUI/src/com/android/keyguard/ClockEventController.kt +10 −6 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading @@ -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 Loading Loading @@ -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) Loading Loading @@ -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 { Loading Loading @@ -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) } } } Loading packages/SystemUI/src/com/android/keyguard/KeyguardStatusViewController.java +18 −3 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 = Loading Loading @@ -135,6 +139,7 @@ public class KeyguardStatusViewController extends ViewController<KeyguardStatusV FeatureFlags featureFlags, InteractionJankMonitor interactionJankMonitor, KeyguardInteractor keyguardInteractor, KeyguardTransitionInteractor keyguardTransitionInteractor, DumpManager dumpManager, PowerInteractor powerInteractor) { super(keyguardStatusView); Loading @@ -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 Loading Loading @@ -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() { Loading Loading @@ -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); } } Loading packages/SystemUI/src/com/android/keyguard/KeyguardVisibilityHelper.java +15 −6 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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, Loading @@ -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; } Loading Loading @@ -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); Loading packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewConfigurator.kt +3 −0 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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 Loading Loading @@ -140,6 +142,7 @@ constructor( keyguardStateController, shadeInteractor, { keyguardStatusViewController!!.getClockController() }, interactionJankMonitor, ) } Loading Loading
packages/SystemUI/res/values/dimens.xml +2 −0 Original line number Diff line number Diff line Loading @@ -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> Loading
packages/SystemUI/src/com/android/keyguard/ClockEventController.kt +10 −6 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading @@ -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 Loading Loading @@ -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) Loading Loading @@ -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 { Loading Loading @@ -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) } } } Loading
packages/SystemUI/src/com/android/keyguard/KeyguardStatusViewController.java +18 −3 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 = Loading Loading @@ -135,6 +139,7 @@ public class KeyguardStatusViewController extends ViewController<KeyguardStatusV FeatureFlags featureFlags, InteractionJankMonitor interactionJankMonitor, KeyguardInteractor keyguardInteractor, KeyguardTransitionInteractor keyguardTransitionInteractor, DumpManager dumpManager, PowerInteractor powerInteractor) { super(keyguardStatusView); Loading @@ -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 Loading Loading @@ -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() { Loading Loading @@ -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); } } Loading
packages/SystemUI/src/com/android/keyguard/KeyguardVisibilityHelper.java +15 −6 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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, Loading @@ -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; } Loading Loading @@ -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); Loading
packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewConfigurator.kt +3 −0 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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 Loading Loading @@ -140,6 +142,7 @@ constructor( keyguardStateController, shadeInteractor, { keyguardStatusViewController!!.getClockController() }, interactionJankMonitor, ) } Loading