Fix text crossfade

When expanding a notification and changing the text displayed, fade-out
the going-away text earlier, and fade-in the new text later.

This avoids a state in between where some text is drawn on top of
other text.

Test: Create notification with long text, use drag to slowly expand
      notification. Check that text is never drawn on top of each other
Bug: 232852389
Change-Id: If0eb86aaf858ba7b2043bca56c4c70196709f078
This commit is contained in:
Peter Kalauskas
2022-05-12 22:53:37 +00:00
parent 5d4978d3f5
commit ccc3a66231

View File

@@ -16,6 +16,7 @@
package com.android.systemui.statusbar.notification;
import android.util.MathUtils;
import android.util.Pools;
import android.view.View;
import android.view.animation.Interpolator;
@@ -98,7 +99,10 @@ public class TransformState {
if (sameAs(otherState)) {
ensureVisible();
} else {
CrossFadeHelper.fadeIn(mTransformedView, transformationAmount, true /* remap */);
CrossFadeHelper.fadeIn(
mTransformedView,
MathUtils.constrainedMap(0, 1, 0.45f, 1, transformationAmount),
false /* remap */);
}
transformViewFullyFrom(otherState, transformationAmount);
}
@@ -294,7 +298,10 @@ public class TransformState {
}
return false;
} else {
CrossFadeHelper.fadeOut(mTransformedView, transformationAmount);
CrossFadeHelper.fadeOut(
mTransformedView,
MathUtils.constrainedMap(0, 1, 0, 0.55f, transformationAmount),
false /* remap */);
}
transformViewFullyTo(otherState, transformationAmount);
return true;