[Bouncer] Add better way to determine inflection.
It seems that the scenario test failed because it could never reach the threshold to determine whether the element should fade back in on the other side. I found a way more elegant approach here. This is confirmed to fix the scenario test and is way better. Fixes: 253470463 Test: atest Change-Id: I5c1d1260d3c9d343fd38ee1ff6e3c72edf161dea
This commit is contained in:
@@ -109,12 +109,13 @@ class KeyguardSecurityViewTransition : Transition() {
|
||||
object : AnimatorListenerAdapter() {
|
||||
override fun onAnimationEnd(animation: Animator) {
|
||||
runningSecurityShiftAnimator = null
|
||||
if (shouldRestoreLayerType) {
|
||||
v.setLayerType(View.LAYER_TYPE_NONE, /* paint= */ null)
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
var finishedFadingOutNonSecurityView = false
|
||||
|
||||
runningSecurityShiftAnimator.addUpdateListener { animation: ValueAnimator ->
|
||||
val switchPoint = SECURITY_SHIFT_ANIMATION_FADE_OUT_PROPORTION
|
||||
val isFadingOut = animation.animatedFraction < switchPoint
|
||||
@@ -153,6 +154,13 @@ class KeyguardSecurityViewTransition : Transition() {
|
||||
startRect.right + currentTranslation,
|
||||
startRect.bottom
|
||||
)
|
||||
} else {
|
||||
v.setLeftTopRightBottom(
|
||||
startRect.left,
|
||||
startRect.top,
|
||||
startRect.right,
|
||||
startRect.bottom
|
||||
)
|
||||
}
|
||||
} else {
|
||||
// And in again over the remaining (100-X)%.
|
||||
@@ -175,32 +183,13 @@ class KeyguardSecurityViewTransition : Transition() {
|
||||
endRect.right - translationRemaining,
|
||||
endRect.bottom
|
||||
)
|
||||
}
|
||||
}
|
||||
if (animation.animatedFraction == 1.0f && shouldRestoreLayerType) {
|
||||
v.setLayerType(View.LAYER_TYPE_NONE, /* paint= */ null)
|
||||
}
|
||||
|
||||
// For views that are not the security view flipper, we do not want to apply
|
||||
// an x translation animation. Instead, we want to fade out, move to final position and
|
||||
// then fade in.
|
||||
if (v !is KeyguardSecurityViewFlipper) {
|
||||
// Opacity goes close to 0 but does not fully get to 0.
|
||||
if (opacity - 0.001f < 0f) {
|
||||
} else {
|
||||
v.setLeftTopRightBottom(
|
||||
endRect.left,
|
||||
endRect.top,
|
||||
endRect.right,
|
||||
endRect.bottom
|
||||
)
|
||||
finishedFadingOutNonSecurityView = true
|
||||
} else if (!finishedFadingOutNonSecurityView) {
|
||||
v.setLeftTopRightBottom(
|
||||
startRect.left,
|
||||
startRect.top,
|
||||
startRect.right,
|
||||
startRect.bottom
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user