Send a zero for assist invocation on animation end

When a corner gesture doesn't complete, we animate the progress from its
current value back to 0. When it hits 0, sysui will perform some cleanup
e.g. removing the window. However, it's possible the animator won't
return exactly 0 and will complete, so we should send an explicit 0
whenever the animator completes.

Bug: 187768368
Test: We don't have a repro for the bug, but expect this should be more
      robust. Tested to validate it didn't regress.
Change-Id: Id65f94534363c326fc2c8d0a9114a3c036aa55e4
This commit is contained in:
Matt Casey
2021-06-22 10:14:10 -04:00
parent fe139cdf69
commit eeac1aba30
@@ -26,6 +26,8 @@ import static android.view.MotionEvent.ACTION_UP;
import static com.android.launcher3.Utilities.squaredHypot;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ValueAnimator;
import android.content.Context;
import android.content.res.Resources;
@@ -199,6 +201,14 @@ public class AssistantInputConsumer extends DelegateInputConsumer {
float progress = (float) valueAnimator.getAnimatedValue();
SystemUiProxy.INSTANCE.get(mContext).onAssistantProgress(progress);
});
// Ensure that we always send a zero at the end to clear the invocation state.
animator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
SystemUiProxy.INSTANCE.get(mContext).onAssistantProgress(0f);
}
});
animator.setInterpolator(Interpolators.DEACCEL_2);
animator.start();
}