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:
@@ -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;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user