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
This commit is contained in:
Evan Laird
2019-05-10 16:56:29 -04:00
parent a7423ca97c
commit 798d1f8310

View File

@@ -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;
}
}