From 6a9ede7507984fdb57aa7d35bd743c49c84e1066 Mon Sep 17 00:00:00 2001 From: Chandru Date: Fri, 21 Oct 2022 10:41:33 +0000 Subject: [PATCH] Extract duplicated code into methods in FaceScanningOverlay Bug: 254814998 Test: NA Test: verified manually, camera protection ring and face scanning overlay drawn correctly on keyguard. Change-Id: If0bef65653394169a05b5633f8706a7707900c52 --- .../android/systemui/FaceScanningOverlay.kt | 83 ++++++++++--------- 1 file changed, 42 insertions(+), 41 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/FaceScanningOverlay.kt b/packages/SystemUI/src/com/android/systemui/FaceScanningOverlay.kt index f64089177d1f0..afc507a52b362 100644 --- a/packages/SystemUI/src/com/android/systemui/FaceScanningOverlay.kt +++ b/packages/SystemUI/src/com/android/systemui/FaceScanningOverlay.kt @@ -151,19 +151,12 @@ class FaceScanningOverlay( if (showScanningAnim) Interpolators.STANDARD_ACCELERATE else if (faceAuthSucceeded) Interpolators.STANDARD else Interpolators.STANDARD_DECELERATE - addUpdateListener(ValueAnimator.AnimatorUpdateListener { - animation: ValueAnimator -> - cameraProtectionProgress = animation.animatedValue as Float - invalidate() - }) + addUpdateListener(this@FaceScanningOverlay::updateCameraProtectionProgress) addListener(object : AnimatorListenerAdapter() { override fun onAnimationEnd(animation: Animator) { cameraProtectionAnimator = null if (!showScanningAnim) { - visibility = View.INVISIBLE - hideOverlayRunnable?.run() - hideOverlayRunnable = null - requestLayout() + hide() } } }) @@ -172,19 +165,10 @@ class FaceScanningOverlay( rimAnimator?.cancel() rimAnimator = AnimatorSet().apply { if (showScanningAnim) { - val rimAppearAnimator = ValueAnimator.ofFloat(SHOW_CAMERA_PROTECTION_SCALE, - PULSE_RADIUS_OUT).apply { - duration = PULSE_APPEAR_DURATION - interpolator = Interpolators.STANDARD_DECELERATE - addUpdateListener(ValueAnimator.AnimatorUpdateListener { - animation: ValueAnimator -> - rimProgress = animation.animatedValue as Float - invalidate() - }) - } - // animate in camera protection, rim, and then pulse in/out - playSequentially(cameraProtectionAnimator, rimAppearAnimator, + playSequentially( + cameraProtectionAnimator, + createRimAppearAnimator(), createPulseAnimator(), createPulseAnimator(), createPulseAnimator(), createPulseAnimator(), createPulseAnimator(), createPulseAnimator()) @@ -200,11 +184,7 @@ class FaceScanningOverlay( interpolator = if (faceAuthSucceeded) Interpolators.STANDARD_DECELERATE else Interpolators.STANDARD - addUpdateListener(ValueAnimator.AnimatorUpdateListener { - animation: ValueAnimator -> - rimProgress = animation.animatedValue as Float - invalidate() - }) + addUpdateListener(this@FaceScanningOverlay::updateRimProgress) addListener(object : AnimatorListenerAdapter() { override fun onAnimationEnd(animation: Animator) { rimProgress = HIDDEN_RIM_SCALE @@ -216,11 +196,7 @@ class FaceScanningOverlay( val successOpacityAnimator = ValueAnimator.ofInt(255, 0).apply { duration = PULSE_SUCCESS_DISAPPEAR_DURATION interpolator = Interpolators.LINEAR - addUpdateListener(ValueAnimator.AnimatorUpdateListener { - animation: ValueAnimator -> - rimPaint.alpha = animation.animatedValue as Int - invalidate() - }) + addUpdateListener(this@FaceScanningOverlay::updateRimAlpha) addListener(object : AnimatorListenerAdapter() { override fun onAnimationEnd(animation: Animator) { rimPaint.alpha = 255 @@ -248,27 +224,52 @@ class FaceScanningOverlay( } } + private fun createRimAppearAnimator(): ValueAnimator { + return ValueAnimator.ofFloat( + SHOW_CAMERA_PROTECTION_SCALE, + PULSE_RADIUS_OUT + ).apply { + duration = PULSE_APPEAR_DURATION + interpolator = Interpolators.STANDARD_DECELERATE + addUpdateListener(this@FaceScanningOverlay::updateRimProgress) + } + } + + private fun hide() { + visibility = INVISIBLE + hideOverlayRunnable?.run() + hideOverlayRunnable = null + requestLayout() + } + + private fun updateRimProgress(animator: ValueAnimator) { + rimProgress = animator.animatedValue as Float + invalidate() + } + + private fun updateCameraProtectionProgress(animator: ValueAnimator) { + cameraProtectionProgress = animator.animatedValue as Float + invalidate() + } + + private fun updateRimAlpha(animator: ValueAnimator) { + rimPaint.alpha = animator.animatedValue as Int + invalidate() + } + fun createPulseAnimator(): AnimatorSet { return AnimatorSet().apply { val pulseInwards = ValueAnimator.ofFloat( PULSE_RADIUS_OUT, PULSE_RADIUS_IN).apply { duration = PULSE_DURATION_INWARDS interpolator = Interpolators.STANDARD - addUpdateListener(ValueAnimator.AnimatorUpdateListener { - animation: ValueAnimator -> - rimProgress = animation.animatedValue as Float - invalidate() - }) + addUpdateListener(this@FaceScanningOverlay::updateRimProgress) } val pulseOutwards = ValueAnimator.ofFloat( PULSE_RADIUS_IN, PULSE_RADIUS_OUT).apply { duration = PULSE_DURATION_OUTWARDS interpolator = Interpolators.STANDARD - addUpdateListener(ValueAnimator.AnimatorUpdateListener { - animation: ValueAnimator -> - rimProgress = animation.animatedValue as Float - invalidate() - }) + addUpdateListener(this@FaceScanningOverlay::updateRimProgress) } playSequentially(pulseInwards, pulseOutwards) }