diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java index 1cfcf8cbbdcb5..2892ee3c7643e 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java +++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java @@ -1398,7 +1398,11 @@ public class VolumeDialogImpl implements VolumeDialog, Dumpable, @Override public void onAnimationCancel(@NonNull Animator animation) { mInteractionJankMonitor.cancel(CUJ_VOLUME_CONTROL); - Log.d(TAG, "onAnimationCancel"); + Log.i(TAG, "onAnimationCancel"); + + // We can only have one animation listener for cancel, so the jank listener should + // also call for cleanup. + finishDismiss(); } @Override @@ -1490,12 +1494,7 @@ public class VolumeDialogImpl implements VolumeDialog, Dumpable, .setDuration(mDialogHideAnimationDurationMs) .setInterpolator(new SystemUIInterpolators.LogAccelerateInterpolator()) .withEndAction(() -> mHandler.postDelayed(() -> { - mController.notifyVisible(false); - mDialog.dismiss(); - tryToRemoveCaptionsTooltip(); - mIsAnimatingDismiss = false; - - hideRingerDrawer(); + finishDismiss(); }, 50)); if (!shouldSlideInVolumeTray()) animator.translationX(mDialogView.getWidth() / 2.0f); animator.setListener(getJankListener(getDialogView(), TYPE_DISMISS, @@ -1510,6 +1509,18 @@ public class VolumeDialogImpl implements VolumeDialog, Dumpable, Trace.endSection(); } + /** + * Clean up and hide volume dialog. Called when animation is finished/cancelled. + */ + private void finishDismiss() { + mController.notifyVisible(false); + mDialog.dismiss(); + tryToRemoveCaptionsTooltip(); + mIsAnimatingDismiss = false; + + hideRingerDrawer(); + } + private boolean showActiveStreamOnly() { return mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_LEANBACK) || mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEVISION);