Launcher can now receive onTaskAppeared callback from
RecentsAnimationController to get remote animation target when in quick
switch mode.
Note: This CL just demonstrates how to receive callback and then
calling removeTask & finish recents animation,
in order to really improve quick switch flicking, launcher side needs
to implement the rest of logic to animate task's remote animation target
to make task switching more smoothly.
Bug: 152480470
Test: WIP
Change-Id: Id0371db7339cfe84942cc905a89b0a2c1fab62ec
(cherry picked from commit bec41bc5b9)
This sets the feature flag on launcher side
and also updates the setting in Settings.Global
Launcher DOES NOT listen to the Settings.Global
change from adb anymore. This should take
preference over setting it from command line.
Also fix a related swipe to home animation bug
that happened w/ merge conflict.
Fixes: 150260456
Test: Set and unset, visually verified behavior.
Tested w/ autorotate on and off.
Checked Settings.Global value correctly updated
via "adb shell settings get global
fixed_rotation_transform"
TODO: Update tests to reflect this new
default-on fixed rotation behavior.
Change-Id: Id95f006eb1e92a59e24b05567298fd21b1409b13
3P launchers were causing a ClassCastException so
moved it down to Launcher specific code.
3P as a whole will have to be handled better with the
new rotation paradigm so this will be addressed then.
Fixes: 146176182
Test: Set Nova Launcher as default home app
Swiped up to recents, nothing breaks.
Change-Id: I91a267f3a29bd5b9638bc9b69d864ac2de3f3d72
Instead of having defined constants that are hard to tune, now we
calculate the factors at runtime based on the launcher animation scale.
This ensures the pullback always has reasonable values regardless of
orientation, feature flags, etc.
Bug: 149934536
Change-Id: If07e3b87475f8f9613e94df00c394430aad7d507
Floating icon animation runs entirely in portrait
since that's what orienation launcher starts in.
Current app window target rects are in landscape to
be able animate to Overview correctly (which is not
in portrait since the leash from WM is in the same
orientation as that of foreground app).
Invert that rect as the animation from app window
to floating icon progresses.
Fixes: 148528795
Change-Id: Ie1149a1a8904afc80bd1986f8d67b6f2d88c49f2
WM is making changes which allows apps to maintain
their orientation independent of the orientation of
the foreground app. This allows recents to always start
in portrait even when the app currently running is in
landscape. This means we have to give the illusion of
a landscape oriented overview when user swipes up in
gesterual nav when launcher is started in portrait
configuration.
PagedOrientationHandler abstracts all coordinate specific
logic from Paged/RecentsView primarily, but also all
other dynamic calculations throughout launcher.
PagedViewOrientationState is the single point of exposure
to other classes that depend on those changes. The goal
is to also minimize holding state to allow for default
implementations of PagedOrientationHandler for all the
3p/Fallback classes. PagedViewOrientationState also
holds other data around rotation that isn't
specifically tied to view logic.
The fake landscape overview can be toggled with:
adb shell settings put global forced_rotation [0/1]
Fixes: 146176182
Change-Id: I65d8d4e9f92b93931cbe0053ccaf0cda8d2ffd6c
Previously, we were only updating the clip rect when params.currentRect
== null, meaning the clip would be stale once the caller started
providing its own rect (e.g. when swiping to home).
Also fix some visual jumps when swiping home, all caused by running the
transform progress from 0 to 1 instead of starting at whatever the
progress was before ending the gesture, e.g.:
- When swiping to home without animating into an icon, the corner radius
was set back to the window corner radius.
- Before this change, the clip didn't update throughout the animation,
making the window slightly bigger than the floating icon view; after
this change, the clip jumped to show the insets again before clipping
back down during the home animation.
Bug: 149870691
Change-Id: Ie48f4b665a5bf3cbef76bdf7f043febe99fb84a0
AppWindowAnimationHelper and TransformParams were being very tightly
intertwined, to the point that you really had to understand subtle
nuances of both in order to get a desired behavior. This makes making
changes really difficult, because there are lots of "traps" to know
about and navigate. To help alleviate this burden, cleaned up some of
these traps and give AWAH and TP distinct roles:
- A caller who needs to animate an app window needs both AWAH and TP.
TP defines specific parameters of how the app window should be
controlled, and AWAH simply reads from TP in order to provide the
desired behavior.
- Only the caller should write to TP; AWAH should no longer change
anything in a TP that is passed to it. For instance, instead of
repurposing TP.currentRect, AWAH now has its own mCurrentRect to
update based on passed parameters.
- TP is a very basic class that just holds various values that callers
can set one at a time. The order should not matter (setting one value
will never set another one), and defaults make sense.
- Commented the setter methods in TP so developers shouldn't have to
follow the code to see how they are used.
Bug: 149870691
Change-Id: Ia48f4453c29549271a3fc6538128a1a77439e015
- Fix the shelf tracking distance since there's no shelf.
- Pullback against a swipe up from an app later
Bug: 143361609
Change-Id: I296fb9bcb20d7d45931006f20512f0dc4a54212b
Also keep the 3P launcher's alpha at 0 during the gesture, and
don't send the home intent if user touches during the transition.
Bug: 139682945
Change-Id: Ie758f0b337bb173b34f5585ec1915b7ea1145094
We call finish recents animation before app switch animation finishes. When we finish, the live tile params are not cleared up.
This change takes care of
- clean up recents animation targets when it's finished
- do a sanity check on live tile surface params before adding them to the surface transform array
Fixes: 143889142
Test: Swipe up to Overview in live tile mode, switch to a different task, and make sure it doesn't crash anymore
Change-Id: I089cf0a97744461d1fec4d0c97e0c3c6c1049ae3
- Bake overview/home component into the gesture state (it should never
change mid-gesture), this allows us to remove OverviewComponentObserver
refs from the handlers
- Move nav bar position into DeviceState
- Remove passing RecentsModel into the handlers, it already partially
references it statically
Bug: 141886704
Change-Id: I62f9138651cbe1fb984b57b96e4212ebaa1ffb5d
- Rely on the device state navigation mode instead of tracking it
independently in various places
Bug: 141886704
Change-Id: I421c1fa11ca7362aff8e2388a2b5d427b39af3e9
- Require users of the activity interface to go through the interface to
get the raw activity
- Remove calls that pass in the activity since the interface already can
get the reference to it internally (and the interface always has the
reference before the caller)
Bug: 141886704
Change-Id: I13e52caba593db918e8a7764c751044142fe7ece
Signed-off-by: Winson Chung <winsonc@google.com>
- Allow multiple callbacks to be set for the same state
- Expose method to set state on ui thread directly
- Ensure callbacks are made immediately if the state is already set
- Clarify that the one shot callbacks vs the state listeners
Bug: 141886704
Change-Id: I8ea0dcd2821ee18d071706eaddeb2852afa13f30
- Instead of a shared state which is written into, gestures update their
own gesture state and that state is passed to the next gesture.
- The existing shared state encoded the final end target (which is
currently directly correlated with canGestureBeContinued). If we move
the end target calculations to the GestureState, the handlers can listen
for those changes and we can use the previous gesture state to decide
which consumer to choose. In addition, we move over the interrupted-
finish-launch-task id.
Bug: 141886704
Change-Id: Icb6a3815c16b23692dbcde316114bd3cea06634e
Signed-off-by: Winson Chung <winsonc@google.com>
- ActivityControlHelper -> BaseActivityInterface
LauncherActivityControlHelper -> LauncherActivityInterface
FallbackActivityControlHelper -> FallbackActivityInterface
QuickCaptureTouchConsumer -> QuickCaptureInputConsumer
- Move gestures to use the activity interface from the gesture state
Bug: 141886704
Change-Id: I6f12daeb03d564143404767dfe4576e3e5da2a1d
- Move the recents animation classes out of util into base quickstep pkg
- Clean up some local var names
Bug: 141886704
Change-Id: I1556179e203cbb43b77ea58e6fe520aa9944099b
- RecentsAnimationTargets: manages information about the targets only
RecentsAnimationCallbacks: manages callbacks from WM about the animation
RecentsAnimationWrapper: manages calls into WM to update the animation
(to be renamed accordingly in a follow up CL)
- Create the Callbacks as a part of starting the recents animation, and
have the callbacks create the controller wrapper and the targets, which
are both notified to the listeners through the callbacks.
- Instead of passing through a callback for recents animation finished,
have it be a part of the recents animation callbacks.
Bug: 141886704
Change-Id: I4ff26a175654e82efe059fa74d1f310e93961dc9
- Transfer screenshot from WM to launcher when recents animation gets cancelled due to stack order change
- Transform two live windows when app open animation happens from recents
Fixes: 139258979
Fixes: 139259253
Test: switch task in overview
Change-Id: I80bafb8d45b9250fda937223254e365596a7f538
> Using a common class for both Launcher and RecentsActivity
> Removing static refenrece to LauncherModel and using a common pattern for
tracking activities
Bug: 141376165
Bug: 137568159
Change-Id: Ic1897abe6913ec78e25725118eedf5b468d5ec70
using a different handler
This will allow us to use common logic for handling horizontal swipe
Bug: 137197916
Change-Id: I6f9cba6e8728dd0669482906c4bf34270af2bc82
On swipe up, we start a rencets transition to the current launcher app. At the
end of the transition, if the user is going to recents, we start overview activity.
Bug: 137197916
Change-Id: Ie5ed848879ad965dcab2780a05d649e3be066568