From 5b3cc1158b3f1327b4139b12fc28eba1a3a0ca63 Mon Sep 17 00:00:00 2001 From: Mady Mellor Date: Mon, 12 Sep 2016 15:53:35 -0700 Subject: [PATCH] Improve swiping to reveal gear for ongoing notifications with time check Swiping to show the gear for ongoing notifications can be difficult, this CL adds an additional check for the duration of the gesture, if the gesture takes long enough on an non dismissable notification then it considers it a gear reveal. Bug: 30908400 Change-Id: Iec769bae2a70ef79acb43c69063cc9e2b6b1f56f --- .../stack/NotificationStackScrollLayout.java | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java index c8c43101c90fd..666f56d143719 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java @@ -3912,6 +3912,7 @@ public class NotificationStackScrollLayout extends ViewGroup private class NotificationSwipeHelper extends SwipeHelper { private static final long SHOW_GEAR_DELAY = 60; private static final long COVER_GEAR_DELAY = 4000; + private static final long SWIPE_GEAR_TIMING = 200; private CheckForDrag mCheckForDrag; private Runnable mFalsingCheck; private Handler mHandler; @@ -4028,6 +4029,9 @@ public class NotificationStackScrollLayout extends ViewGroup boolean gestureTowardsGear = isTowardsGear(velocity, mCurrIconRow.isIconOnLeft()); boolean gestureFastEnough = Math.abs(velocity) > getEscapeVelocity(); + final double timeForGesture = ev.getEventTime() - ev.getDownTime(); + final boolean showGearForSlowOnGoing = !canChildBeDismissed(animView) + && timeForGesture >= SWIPE_GEAR_TIMING; if (mGearSnappedTo && mCurrIconRow.isVisible()) { if (mGearSnappedOnLeft == mCurrIconRow.isIconOnLeft()) { @@ -4052,7 +4056,8 @@ public class NotificationStackScrollLayout extends ViewGroup } else { dismissOrSnapBack(animView, velocity, ev); } - } else if ((!gestureFastEnough && swipedEnoughToShowGear(animView)) + } else if (((!gestureFastEnough || showGearForSlowOnGoing) + && swipedEnoughToShowGear(animView)) || gestureTowardsGear) { // Gear has not been snapped to previously and this is gear revealing gesture snapToGear(animView, velocity); @@ -4104,13 +4109,9 @@ public class NotificationStackScrollLayout extends ViewGroup final float multiplier = canChildBeDismissed(animView) ? 0.4f : 0.2f; final float snapBackThreshold = getSpaceForGear(animView) * multiplier; final float translation = getTranslation(animView); - final boolean fromLeft = translation > 0; - final float absTrans = Math.abs(translation); - final float notiThreshold = getSize(mTranslatingParentView) * 0.4f; - - return mCurrIconRow.isVisible() && (mCurrIconRow.isIconOnLeft() - ? (translation > snapBackThreshold && translation <= notiThreshold) - : (translation < -snapBackThreshold && translation >= -notiThreshold)); + return !swipedFarEnough() && mCurrIconRow.isVisible() && (mCurrIconRow.isIconOnLeft() + ? translation > snapBackThreshold + : translation < -snapBackThreshold); } @Override