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
internal var startLightRevealScrimOnKeyguardFadingAway = false
var lightRevealScrimAnimator: ValueAnimator? = null
var fingerprintSensorLocation: PointF? = null
private var faceSensorLocation: PointF? = null
private var circleReveal: LightRevealEffect? = null
@@ -163,7 +164,8 @@ class AuthRippleController @Inject constructor(
if (keyguardStateController.isKeyguardFadingAway) {
val lightRevealScrim = centralSurfaces.lightRevealScrim
if (startLightRevealScrimOnKeyguardFadingAway && lightRevealScrim != null) {
ValueAnimator.ofFloat(.1f, 1f).apply {
lightRevealScrimAnimator?.cancel()
lightRevealScrimAnimator = ValueAnimator.ofFloat(.1f, 1f).apply {
interpolator = Interpolators.LINEAR_OUT_SLOW_IN
duration = RIPPLE_ANIMATION_DURATION
startDelay = keyguardStateController.keyguardFadingAwayDelay
@@ -183,6 +185,8 @@ class AuthRippleController @Inject constructor(
if (lightRevealScrim.revealEffect == circleReveal) {
lightRevealScrim.revealEffect = LiftReveal
}
lightRevealScrimAnimator = null
}
})
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() {
// reset the light reveal start in case we were pending an unlock
startLightRevealScrimOnKeyguardFadingAway = false

View File

@@ -1022,6 +1022,23 @@ public class CentralSurfacesImpl extends CoreStartable implements
public void onUnlockedChanged() {
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();