From 798d1f8310ceca6a06722e0a2581d4d534a50337 Mon Sep 17 00:00:00 2001 From: Evan Laird Date: Fri, 10 May 2019 16:56:29 -0400 Subject: [PATCH] Don't animate status icons when the container changes size If an icon doesn't change position relative to the view end, don't bother animating the X translation. Otherwise we get wonky in-between states Test: Visual Fixes: 132288484 Change-Id: I131bf38627a941efb1af84f2aec7c3e0391947e8 --- .../statusbar/phone/StatusIconContainer.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusIconContainer.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusIconContainer.java index 6e36c019bb284..1096a6e4d818e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusIconContainer.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusIconContainer.java @@ -369,8 +369,18 @@ public class StatusIconContainer extends AlphaOptimizedLinearLayout { public int visibleState = STATE_ICON; public boolean justAdded = true; + // How far we are from the end of the view actually is the most relevant for animation + float distanceToViewEnd = -1; + @Override public void applyToView(View view) { + float parentWidth = 0; + if (view.getParent() instanceof View) { + parentWidth = ((View) view.getParent()).getWidth(); + } + + float currentDistanceToEnd = parentWidth - xTranslation; + if (!(view instanceof StatusIconDisplayable)) { return; } @@ -394,7 +404,7 @@ public class StatusIconContainer extends AlphaOptimizedLinearLayout { // all other transitions (to/from dot, etc) animationProperties = ANIMATE_ALL_PROPERTIES; } - } else if (visibleState != STATE_HIDDEN && xTranslation != view.getTranslationX()) { + } else if (visibleState != STATE_HIDDEN && distanceToViewEnd != currentDistanceToEnd) { // Visibility isn't changing, just animate position animationProperties = X_ANIMATION_PROPERTIES; } @@ -407,6 +417,8 @@ public class StatusIconContainer extends AlphaOptimizedLinearLayout { } justAdded = false; + distanceToViewEnd = currentDistanceToEnd; + } }