From a3a4744e1b49a110fafb4634d3e7d5dde936fa99 Mon Sep 17 00:00:00 2001 From: Beverly Date: Thu, 9 Aug 2018 15:15:31 -0400 Subject: [PATCH] Don't re-animate dialog dismissal - If the GlobalActionsDialog or VolumeDialog are already dismissing, don't restart their dismissing animations Change-Id: Ib98857bfd0575d66f9d2d3d21a369686c0bffe02 Fixes: 112347302 Test: manual --- .../systemui/globalactions/GlobalActionsDialog.java | 7 +++++++ .../src/com/android/systemui/volume/VolumeDialogImpl.java | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java index 6c94aa4cbdd84..a195fc9e347b4 100644 --- a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java +++ b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java @@ -1399,6 +1399,7 @@ class GlobalActionsDialog implements DialogInterface.OnDismissListener, private final ColorExtractor mColorExtractor; private boolean mKeyguardShowing; private boolean mShouldDisplaySeparatedButton; + private boolean mShowing; public ActionsDialog(Context context, OnClickListener clickListener, MyAdapter adapter, OnItemLongClickListener longClickListener, boolean shouldDisplaySeparatedButton) { @@ -1507,6 +1508,7 @@ class GlobalActionsDialog implements DialogInterface.OnDismissListener, @Override public void show() { super.show(); + mShowing = true; mGradientDrawable.setAlpha(0); mHardwareLayout.setTranslationX(getAnimTranslation()); mHardwareLayout.setAlpha(0); @@ -1526,6 +1528,10 @@ class GlobalActionsDialog implements DialogInterface.OnDismissListener, @Override public void dismiss() { + if (!mShowing) { + return; + } + mShowing = false; mHardwareLayout.setTranslationX(0); mHardwareLayout.setAlpha(1); mHardwareLayout.animate() @@ -1544,6 +1550,7 @@ class GlobalActionsDialog implements DialogInterface.OnDismissListener, void dismissImmediately() { super.dismiss(); + mShowing = false; } private float getAnimTranslation() { diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java index 02babacc3acd3..41e47689fdaa4 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java +++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java @@ -149,6 +149,7 @@ public class VolumeDialogImpl implements VolumeDialog { private boolean mHovering = false; private boolean mShowActiveStreamOnly; private boolean mConfigChanged = false; + private boolean mIsAnimatingDismiss = false; public VolumeDialogImpl(Context context) { mContext = new ContextThemeWrapper(context, com.android.systemui.R.style.qs_theme); @@ -582,18 +583,24 @@ public class VolumeDialogImpl implements VolumeDialog { protected void dismissH(int reason) { mHandler.removeMessages(H.DISMISS); mHandler.removeMessages(H.SHOW); + if (mIsAnimatingDismiss) { + return; + } mDialogView.animate().cancel(); + mIsAnimatingDismiss = false; mShowing = false; mDialogView.setTranslationX(0); mDialogView.setAlpha(1); ViewPropertyAnimator animator = mDialogView.animate() + .withStartAction(() -> mIsAnimatingDismiss = true) .alpha(0) .setDuration(250) .setInterpolator(new SystemUIInterpolators.LogAccelerateInterpolator()) .withEndAction(() -> mHandler.postDelayed(() -> { if (D.BUG) Log.d(TAG, "mDialog.dismiss()"); mDialog.dismiss(); + mIsAnimatingDismiss = false; }, 50)); if (!isLandscape()) animator.translationX(mDialogView.getWidth() / 2); animator.start();