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
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user