Merge "Ensure light reveal scrim is fully revealed once we're unlocked." into tm-dev

This commit is contained in:
Josh Tsuji
2022-05-04 19:02:37 +00:00
committed by Android (Google) Code Review
2 changed files with 29 additions and 1 deletions

View File

@@ -80,6 +80,7 @@ class AuthRippleController @Inject constructor(
@VisibleForTesting @VisibleForTesting
internal var startLightRevealScrimOnKeyguardFadingAway = false internal var startLightRevealScrimOnKeyguardFadingAway = false
var lightRevealScrimAnimator: ValueAnimator? = null
var fingerprintSensorLocation: PointF? = null var fingerprintSensorLocation: PointF? = null
private var faceSensorLocation: PointF? = null private var faceSensorLocation: PointF? = null
private var circleReveal: LightRevealEffect? = null private var circleReveal: LightRevealEffect? = null
@@ -163,7 +164,8 @@ class AuthRippleController @Inject constructor(
if (keyguardStateController.isKeyguardFadingAway) { if (keyguardStateController.isKeyguardFadingAway) {
val lightRevealScrim = centralSurfaces.lightRevealScrim val lightRevealScrim = centralSurfaces.lightRevealScrim
if (startLightRevealScrimOnKeyguardFadingAway && lightRevealScrim != null) { if (startLightRevealScrimOnKeyguardFadingAway && lightRevealScrim != null) {
ValueAnimator.ofFloat(.1f, 1f).apply { lightRevealScrimAnimator?.cancel()
lightRevealScrimAnimator = ValueAnimator.ofFloat(.1f, 1f).apply {
interpolator = Interpolators.LINEAR_OUT_SLOW_IN interpolator = Interpolators.LINEAR_OUT_SLOW_IN
duration = RIPPLE_ANIMATION_DURATION duration = RIPPLE_ANIMATION_DURATION
startDelay = keyguardStateController.keyguardFadingAwayDelay startDelay = keyguardStateController.keyguardFadingAwayDelay
@@ -183,6 +185,8 @@ class AuthRippleController @Inject constructor(
if (lightRevealScrim.revealEffect == circleReveal) { if (lightRevealScrim.revealEffect == circleReveal) {
lightRevealScrim.revealEffect = LiftReveal lightRevealScrim.revealEffect = LiftReveal
} }
lightRevealScrimAnimator = null
} }
}) })
start() start()
@@ -192,6 +196,13 @@ class AuthRippleController @Inject constructor(
} }
} }
/**
* Whether we're animating the light reveal scrim from a call to [onKeyguardFadingAwayChanged].
*/
fun isAnimatingLightRevealScrim(): Boolean {
return lightRevealScrimAnimator?.isRunning ?: false
}
override fun onStartedGoingToSleep() { override fun onStartedGoingToSleep() {
// reset the light reveal start in case we were pending an unlock // reset the light reveal start in case we were pending an unlock
startLightRevealScrimOnKeyguardFadingAway = false startLightRevealScrimOnKeyguardFadingAway = false

View File

@@ -1022,6 +1022,23 @@ public class CentralSurfacesImpl extends CoreStartable implements
public void onUnlockedChanged() { public void onUnlockedChanged() {
logStateToEventlog(); logStateToEventlog();
} }
@Override
public void onKeyguardGoingAwayChanged() {
// The light reveal scrim should always be fully revealed by the time the keyguard
// is done going away. Double check that this is true.
if (!mKeyguardStateController.isKeyguardGoingAway()) {
if (mLightRevealScrim.getRevealAmount() != 1f) {
Log.e(TAG, "Keyguard is done going away, but someone left the light reveal "
+ "scrim at reveal amount: " + mLightRevealScrim.getRevealAmount());
}
// If the auth ripple is still playing, let it finish.
if (!mAuthRippleController.isAnimatingLightRevealScrim()) {
mLightRevealScrim.setRevealAmount(1f);
}
}
}
}); });
startKeyguard(); startKeyguard();