This reverts commit a8c08584a7.
Reason for revert: "caused a regression with quick switch from home: if you start the gesture then swipe back to the left, it ends up launching the task anyway"
Change-Id: I8e12e2de46b6fc6a3faeb0336762da08080c61d6
With the second swipe, we never complete the swipe to Overview
NoButtonNavbarToOverviewTouchController#maybeSwipeInteractionToOverviewComplete
- mReachedOverview = true
- mDetector.isSettlingState = false
And then the second swipe starts the state transition to Hint but then
it never gets completed because:
1. The animation starts
2. Gets cancelled
3. Starts again
4. Finishes, but is not marked as success since the cancel in #2 was never
set back to false
Bug: 160759508
Change-Id: I8c3972e6209c3d5a4a0bdd9f9b7683de18105d57
AnimatorPlaybackController was using setCurrentPlayTime to control animation,
which converts progress (float) to duration (long) causing the progress to
loose accuracy.
Instead calling setCurrentFraction(float) on the target animation.
Bug: 155164803
Change-Id: I3e4c93c5a75a9ba16e80adee97229c974ffc86b1
=> setCurrentPlayTime is bounded between [0, duration] by the animation framework
Instead using interpolator so that we can go outside the bounds
=> Tune spring stiffness and dampening for overview card dismiss animations
Bug: 154061408
Change-Id: Iaa31491fff499db916b36d9779ec159b8a89a2de
Using PendingAnimation for animation builder.
This will allow us to easily add SpringAnimation to stateAnimation
Change-Id: I8d88489a5da6fc85747ef9be7c13858b441cd28a
> Adding flag support for PendingAnimation which can be used
to define custom behavior for various animations
> Using SpringAnimationBuild for spring animation instead of
SpringObjectanimator
Change-Id: I41ca34b0574981bb3fc7894639a321c12e6feac1
When ENABLE_OVERVIEW_ACTIONS flag is enabled, swiping up from the nav
bar goes to overview if you hold, or the first home screen if you don't.
- Added NoButtonNavBarToOverviewTouchController, which extends
FlingAndHoldTouchController but only works if you start from the nav
bar. Otherwise it falls back to PortraitStatesTouchController to
handle normal state transition to all apps.
- Added HintState. This is where the workspace/hotseat/qsb scale down
when you swipe up from the nav bar, to hint that you're about to
either go to overview or the first home screen.
- Added getQsbScaleAndTranslation() to allow Overview and Hint states
to treat it as part of the hotseat.
- Since Overview needs to show above the QSB as it's animating, bring
Overview to the front and update OverviewScrim to handle the case
where there's no view above Overview to draw the scrim beneath.
- ENABLE_OVERVIEW_ACTIONS is always false in 2-button mode, since the
shelf is crucial to that mode.
Bug: 143361609
Change-Id: I743481bb239dc77f7024dc98ba68a43534da2637
- Add NoButtonQuickSwitchTouchController which uses
BothAxesSwipeDetector to track horizontal and vertical motion.
- Initially, we only detect swipe left to right to quick switch
(like before), but then we allow swipe up to either go to
overview (if you hold) or back home (if you don't hold).
- xDisplacement transitions non-overview components out (e.g. shelf
and workspace), and translates overview in.
- yDisplacement translates overview up and scales it down
Bug: 126596417
Change-Id: Id679ad84c08246e205c667a78ed5df00d7276258
* Listeners weren't getting called properly. We add one listener to the
SpringbjectAnimator and then use that to dispatch to the other listeners.
* We fast finish on both double swipe cases to prevent the shelf from
ending in an invalid state. This causes a visual jump but this can be
addressed in follow up CL.
Bug: 111698021
Change-Id: Ifeb55da9dd253d062122a8e1577f94044f688641
Added new SpringObjectAnimator class that wraps an ObjectAnimator so the
Object can be controlled via the Animator or via a SpringAnimation. It extends
ValueAnimator so that it remains compatible with AnimatorPlaybackController.
Code is behind feature flag toggle QUICKSTEP_SPRINGS.
Bug: 111698021
Change-Id: I1b20179ede37e89a6a6bb2a45d407cc74c99ac4e
Previously we were comparing the controller's progress at the time of
the end of the animation... which is always 1. Instead, we should be
comparing the effective final progress based on the interpolator.
Change-Id: I18110b5a3b914839860931187f39cfa11182b3e2
- Don't have double haptic on quick scrub
- Correctly check interpolated progress to determine final state,
so that it always aligns with the haptic (i.e. passing the haptic
means letting go will go to the new state)
Bug: 109709720
Change-Id: I702bb76a4c15f932f923e81a14cc49f6a9126cb8
- Use OvershootInterpolator based on velocity (consistent with swiping up
from home)
- Scale down recents as well, to be consistent with adjacent pages scaling
up when you launch a task
Bug: 109709720
Change-Id: Ie47309058ccf673a4b86c40c843c415beb2d8dc7
We manually dispatch cancel when returning to the previous state in
onDragEnd(), but could end in a bad state if getting a second,
external cancel (e.g. by pressing home). Thus, we restore the
onCancelListener after manually dispatching cancel.
Bug: 79258868
Change-Id: Idc4c33cede1d8af1829a4a744b9348d379bcf8f7
Previously, user-controlled animations weren't properly being canceled when a
non-user-controlled animation started, e.g. when hitting home. Thus, we could
end in the wrong or inconsistent state because the user-controlled animation's
end runnable was still used. Now we add a cleanup callback for when we reset
the user-controlled animation for one that isn't user-controlled.
Also fixed a couple typos.
Tests (easier with animation durations extended):
- Swipe up and hit home before reaching overview -> land on home
- Go to overview, swipe down slightly (before threshold to go to workspace)
and let go -> return to overview without flash (recents was resetting)
- Swipe up, press home while swiping -> goes home, stops responding to drag
- Start dismissing task and hit home before it finishes (or while dragging)
-> goes home, stops responding to drag
Bug: 78249220
Change-Id: If11d8999e3fadba38c987b25af67cd2304cd859b
Some animation might be running from a previous orientation, which can cuase property changes
to get skipped.
Bug: 77848165
Bug: 77774619
Change-Id: I3e198196192746abdd72a1970ff2ef407bf4aff9
recents view and related classes.
This allows the common animation to be used in fallback activity.
Bug: 75979063
Change-Id: I2b5bf5e66406621305b9a076793434f9c5cecdfd
> When on home time, swiping up goes to all_apps, and swiping down goes to normal
> When on a recents tile, swiping up the tile dismisses it, swiping down launches it
> When on a recents tile, swiping up on the hotseat opens allApps.
Change-Id: I59f8c02f5c5d9cb88c0585a083fbc33d33b1c806
> Currently swipe only works from NORMAL and ALL_APPS state
> All interpolation is spread linearly
On pausing the drag for some time, the workspace moves to overview state,
and all other transitions interpolate linearly from there over the
remaining swipe range
Change-Id: Ic79f9d0f446c9bfff11e4af4d31ddc1c86c45ab2
> Separating all-apps transtions control and vertical shift touch handling
> Creating separate spring handler for search box (to avoid adding and removing spring)
> Driving all-apps vertical shift using state AnimatorSet
Bug: 67678570
Change-Id: I3b6a4d1f43275a5f485b399444742b6b9a8c4bb9