This variable is now mutable, making the uppercase format misleading.
For instance, users might assume they can use this value in other
immutable properties, when they really should be accessing the latest
value every time they need it.
Context: https://source.android.com/docs/setup/contribute/code-style#follow-field-naming-conventions
Test: Manual
Bug: 271160958
Change-Id: Iaaa51d9153cb8a7d686c72e1210b1948029dcfd5
Bug fixes:
- Unusual long scroll when only focus task left after split select
- Animation jump when tasks cannot fit screen width after dismiss or split select
To fix the above issue, generified calculations when total grid task width < screen width:
- Removed some special case handling when only focus task left (getSnapToFocusedTaskScrollDiff), and instead replace with generic logic that calculation that extra scroll position (shortTotalCompensation) needed when long row width is smaller than the grid size
- Fixed snapped task grid translation calculation to account for shortTotalCompensation
- Last task scroll calculation should account for shortTotalCompensation too
- Calculate the expected shortTotalCompensation after dismiss, and use that to adjust the close gap between clearAll distance
splitScrollOffset that we applied during split screen does not work well when shortTotalCompensation != 0. splitScrollOffset is not a good solution to handle split placeholder, as it allow tasks to scroll to weird position. I removed splitScrollOffset completely, and only apply split translation when split placeholder covers the tasks:
- Removed splitScrollOffset on TaskView/ClearAll, so scroll position of TaskView will not change while in split to splify things.
- When split placehodler will cover task's natural position (taskSize) in overview grid, apply split translation on all tasks similar to handheld
- Removed isSplitPlaceholderFirstInGrid/isSplitPlaceholderLastInGrid adjustments
Bug: 257952455
Test: Enter overview from home
Test: Enter overview from app, with variations that quick switch and enter
Test: Dismiss task from different position
Test: Split select task from different position
Test: Repeat with/without GRID_ONLY_OVERVIEW flag
Test: Repeat with handheld
Change-Id: I7689b5384845f03491041b6d910835c9ac4fab08
- Also combined the 2 setCurrentPage call in applyLoadPlan into 1
- Otherwise setCurrentTask may set to page 1 unexpectedly due to page 0's scroll being invalid and out of range
Bug: 246283207
Bug: 238461210
Test: Split screen with 2 apps, click back, go to overview again, should snap to focsued task
Change-Id: I3b57655c810668fe244659437fbd4a745ca02d21
This patch fixes two bugs related to the way tiles slide in when a split is staged. Previously, translations were not being completely reset, so on repeated splits, the thumbnails would retain their old translation setting and cause awkward movements to occur during the slide-in animation.
Fixed by adding setTaskViewsPrimarySplitTranslation() and setTaskViewsSecondarySplitTranslation() in resetFromSplitSelectionState().
Fixes: 249154347
Fixes: 249824716
Test: Manual on grid and non-grid Overview, in a variety of conditions
Change-Id: I2d9aa621a17f178ff8216740d76429d2ac484b39
This change updates the animation for initiating a split from the Overview screen on phones. Includes new timings and interpolators, and extends timing data classes related to SplitAnimationTimings.
Fixes a noticeable issue where the split animation appeared slow on phones.
Outstanding issues (fixes in progress):
- Repeated invocations of split on phones cause an erroneous animation to play. (b/249154347)
- Thumbnail corners do not match placeholder corners; the transition between the two is slightly janky. (b/236761794)
- Placeholder icons should be 72dp. (b/236761794)
Bug: 236761794
Test: Manual
Change-Id: Ibb97ef54498b0aa9556df531d8084799259c06e2
This CL fixes two bugs that were triggered by rotating in split select state:
1) Rotating in split select state will no longer cause a jittery animation to play
2) Initiating split from home, then rotating will no longer create extra split placeholders on screen
The bugs were present because handleSplitSelectionState() animated every state transition into SplitSelect, including SplitSelect > SplitSelect (which happens when rotating). This caused a jittery animation to play, and in certain cases, caused additional copies of FloatingTaskView and SplitInstructionsView to be created.
Fixed by auto-skipping animations for SplitSelect > SplitSelect, and by safely removing views when entering SplitSelect (to prevent duplicates).
Fixes: 242965515
Fixes: 243088958
Test: Verified visually on-device.
Change-Id: Iab813b1fe599bfdc550fe9a1d354b28cedb4b659
This change updates the Overview > OverviewSplitSelect animation to the latest spec. This is a re-upload of a previous change, ag/19464657, but no longer will cause the b/241165022 issue.
Includes:
- New timings
- Task thumbnails slide in with an "overshoot" animation
- Icons fade out and fade in appropriately
- SplitInstructionsView has a new compound "unfold" animation
Bug: 236760307
Test: Manual on tablet. Made sure the b/241165022 issue is fixed.
Change-Id: Ia22f6b6d7b9474b782e693fae2320a34a2985b18
- Avoid overriding interpolator in AllAppsTransitionController.setStateWithAnimation as it's no longer needed and it'll wrongly override interpolator for ANIM_ALL_APPS_FADE
- Override ANIM_ALL_APPS_FADE to FINAL_FRAME in QuickstepAtomicAnimationFactory for tap deadzone to dismiss animation, also added EMPHASIZED_ACCELERATE for the dismiss animation
- Tuned dismiss animation across form factors to 300ms
Fix: 220336617
Test: manual
Change-Id: I4b3e827b503dcb1dd39f0bd99d4c1dd5ffdba0f3
Fixes a bug where disabling animations (through Settings) would cause split staging to crash.
The crash occurs because when animations are disabled, StateManager advances to OVERVIEW_SPLIT_SELECT too quickly, and does not trigger the appropriate code block in RecentsViewStateController#handleSplitSelectionState(). This causes a crash.
Fixed by changing the conditional so that it always runs when OVERVIEW_SPLIT_SELECT is the target state, no matter the starting state.
Note: If more animations are added for this state in the future, the conditional may need to be tweaked further.
Fixes: 223598955
Test: Confirmed not crashing on 2 devices when splitting in a variety of ways.
Change-Id: I7f3def88f124fa1babe9a943adf72c10f58b7131
This is caused by having set a wrong animation duration in the 3 button case. Before this change we have a fixed duration of 370ms which happens to be almost match the Overview transtion duration in gesture nav. However the transition duration in 3-button is set to 250ms. After the transition duration, any unfinished animation is cancelled including this one, resulting in the wrong staged split position. Instead this change pulls the transition duration of toState from the caller = RecentsViewStateController.
Fixes: 222210349
Test: manual
Change-Id: Ie2f3dbe38bb6df33961e2ee78b8a55d0e925501f
* Consolidate setState() and setStateWithAnimation()
to be handled in the same manner
* If no animation, we run the created
PendingAnimation right away
Fixes: 209935590
Test: Tested w/ and w/o animation
Change-Id: I1d6fdba21761b6721e6bd52234016178547cd437
- Also do the same in setState without animation
Fix: 208605204
Test: Exit split screen and enter overview
Change-Id: I34dd102527dffa90925b6f0fd22465f1fe6e819c
- So it'll have exact same behavior as OverviewState to exit overview when going back
- Also removed RecentsView.cancelSplitSelect as it's longer needed
Fix: 181707736
Test: manual
Change-Id: Ide4dfc64680ecc9adfe245ae2de1463735b0490e
- Don't reset mFocusedTaskViewId when focused task become split, so it's reset properly when it's added back to RecentsView
- Moved applySplitScrollOffset to RecentsViewStateController to be called after mSplitHiddenTaskView is added back to RecentsView
- Update scroll after going back from split
- Don't reset mSplitHiddenTaskView's translation as it'll clear the grid translations
Test: manual
Bug: 181707736
Change-Id: I4bd204fc537ee520216f875b3eddf4dc94f7bfd8
- This can prevent the layered content behind to not be visible (and
since launcher draws a cutout and the wallpaper isn't shown, may
result in a black rect. We only specialize for this case while
Launcher is in Overview.
- Also don't need to defer updating drawsBelowRecents, this can result
in the state not being reflected since it runs after the last update
of the transform params
Bug: 205789573
Test: Swipe up from app and ensure behind layers are visible (also
ensure this doesn't affect blur during the swipe or optimizations
after you leave overview)
Change-Id: I07689b3d9b65708797576e5fbefe12fb1f544119
Bugs tracked in b/181704764
Bug: 181704764
Test: Tested on phone and large screen in multiple orientations
Change-Id: I07509006ae3d1f4425dc5119d0c8ed52b41a3bc2
- The failure is not reproducible locally, thus requires adding logs and check ATP result
- Removed some redundant logs
- Changed to log at VERBOSE
- Added extensive logging to all visibility/enable/alpha setter of ActionsView
Bug: 193125090
Test: Manual
Change-Id: I5b449a7f86ea4cef65e0e46de4b389deef9f53f3
- Focus first task when applying load plan
- Focus the next task in shorter row when focused task is dismissed, scale the snapshot and translate the task into focused position
- Always show actions view as there is always a focused task. Update scroll alpha when toggling grid enabled
- In fallback recents, take into account that home task will be dismissed when determining rows for the grid, ensuring next focused task won't affect row balancing
- Bring back clearAllShortTotalCompensation as there isn't always a snappedTaskView (e.g. when snapped to ClearAllButton)
- Ensure that getFocusedTaskView is only used when showAsGrid is true
Bug: 187839470
Fixes: 188001858
Fixes: 189057812
Test: manual
Change-Id: I6f31ef469c58fda70d2dd8caa2ee7d8a80c7f03b
- calculateTaskSize now returns the Rect for focused task
- Introduced calculateGridTaskSize for non-focused task, and translate non-focused tasks to fit the grid
- As Task Rect is now vertically centered, removed ClearAllButton's grid vertical translation
- When ClearAllButton is not shown (e.g. quickswitch), make sure ClearAllButton's scroll won't be used when page snapping. This happens when page scrolls are translated so they're negative.
- Added back ActionsView when task is focused below the TaskView, which become invisible as you scroll
- In Modal state, move the ActionsView down so it won't cover the TaskView
Bug: 175939487
Test: manual
Change-Id: Idfa94a51f856418adc0503cf04211dcb4b1814fe
Previously we were setting the incorrect thumbnail when
swiping to overview, then taking a task screenshot right
when the animation ends and replacing the first thumbnail.
This sometimes caused a flicker of the old thumbnail, now
we avoid setting the thumbnail at all for the taskview that
is being swiped up.
Another edge case handled here is when switching nav modes
and then immediately entering overview, Recents receives an
onConfigChange for changing task icon size. That would cause
all taskviews to null out both their existing icon and
thumbnail, now only the icon gets nulled out.
Existing issue where switching to 3 button nav and then
entering overview shows blank icon, doesn't register for
receiving the updated task snapshot fast enough.
Fixes: 179307265
Test: Ask assistant for weather, swipe to overview
Ask assistant for time, swipe to overview, no flicker
Switch nav modes to gesture, swipe to overview.
There's a flicker for config change, but thumbnail is correct
Change-Id: I300b29f999f6d6876f82bc0189b44f4c10ae33fe
TODO:
* Extract out common elements in TaskShortcutFactory.MultiWindowFactory
for commonalities between new and old way of
invoking split screen
* Integrate with WM APIs (b/182002789)
* Write tests for SplitSelectStateController
Bug: 181704764
Change-Id: Ice35adb4ea82897f5e2433dc9b93a549f3d511b5
- Introduced gridProgress to RecentsView/TaskView ofr animating into grid
- Introduced gridProgress dependant translation and scale properties in TaskView
- Animate running task into grid with TaskViewSimulator
- Remove overview actions (for now) but keep clear all button in large screens
- Adjust ClearAllButton translation to acoomodate for grid
- Use screen width +-50% to calculate task visibility
- Use the position where TaskView is on screenEnd as pageScroll
- TODO: Handle separate recents activity
Doc: go/foldables-launcher-overview
Video: http://dr/file/d/107Aydii1LoFCwP63nWG3Twr2PBDE5ZgD/view?resourcekey=0-aUjdnx8ezimS9tmAgao9ag
Test: Test Launchering overview and launching overview from apps with folloiwng combination:
- large / small screen sizes
- portrait / landscape
- thumbnails from different screen sizes / orientations
Bug: 174464863
Fixes: 181509346
Change-Id: I4b691cde774f2e37532b68ba83c6eed399f2332e
Split logic in RecentsViewStateController based off code that should be
shared and code that should not between Go icon recents and regular
quickstep recents. The Go version will maintain changes in
scale/translationY as per normal recents.
Bug: 114136250
Test: Manual test NexusLauncher, Launcher3GoQuickstep
Test: Build Launcher3GoIconRecents (no longer crashes immediately!)
Change-Id: Id060d6f8f0b68edee4becdf6b91b876bb8dbcefb
Use same interpolator for scale and translationY so that they feel more
coordinated. (They were already the same in all cases except when
scrubbing when already in overview, which never had a scale component
before.)
Bug: 80139193
Change-Id: Id143b5cc9279d55aaa1b0444db5fe4b41ce92170
When we enter overview (overview appears, workspace disappears):
- Workspace scales down from 1f to .8f with OvershootInterpolator(1.2f) at 200 ms
- Workspace fades from 1f to 0 with OvershootInterpolator(1.2f) at 200 ms
- Overview scales down from 1.33f to 1f with OvershootInterpolator(1.2f) at 200 ms
- Overview fades from 0 to 1f with OvershootInterpolator(1.2f) at 200 ms
When we exit overview (overview disappears, workspace appears):
- Workspace scales up from .92f to .1f with DecelerateInterpolator() at 200 ms
- Workspace fades from 0 to 1f with AccelerateInterpolator() at 200 ms
- Overview scales up from 1f to 1.1f with AccelerateInterpolator() at 180ms
- Overview fades from 1f to 0 with DecelerateInterpolator(1.7f) at 200 ms
Parallax while the finger moves: Workspace translates half the distance as the shelf
Bug: 79776746
Change-Id: I319d982cf202bcd6dbbcd68ffc5c0c7853629c7e
- Change durations/interpolators when starting from home vs an app
- Increase dim animation duration after quick scrub from an app
- Also fixed contention between setting dim alpha for the animation
and setting dim alpha for scrolling
Change-Id: I2c9ea52d4eafaad8954f3ff9d3c0c459a07953bc
State handlers can now specify atomic and non-atomic components of
their animations to states, which can be specified when creating a
new animation. There is now one atomic animation, when going from
NORMAL to OVERVIEW (and in reverse):
- RecentsViewStateController's animation (scale/alpha) is all atomic
- WorkspaceStateTransitionAnimation has atomic and non-atomic:
- Hotseat and workspace alpha is atomic, as is workspace scale
- Everything else (scrim, translation, qsb and drag handle alpha) is
non-atomic
- All apps progress is non-atomic
Also simplified dragging through overview; no longer pulls against you,
so we use an OvershootInterpolator when flinging instead of our custom
interpolator for the spring effect.
Bug: 76449024
Bug: 78089840
Change-Id: Iafac84d0c2b99ee9cf9dd5b30e2218286713b449
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
It’s an initial implementation, i.e. no fancy effects.
It shares a parent (LauncherRecentsViewContainer) with RecentsView.
The button is centered in clear_all_button_container, which gets
positioned programmatically to the right of the last task. (RTL polish
will be a separate CL as well).
Bug: 72222505
Change-Id: Ia912908a93a30c2f51450ccf0f97c7495e7916d5
Test: Manual
As you swipe up to overview from home, workspace scales down and fades out as before,
and now recents scales down from 1.2f on top of it. The interpolators are set such
that the workspace animation is seen before the recents animation. Also, we don't
scale down all of recents, only the visible pages (current and adjacent).
Change-Id: I5f8bfe8cafeaa41d26873c63549735d7bdff2bce
Moving the content instead of translating the view. This ensures
that the empty message fades in place while the other content come-in
from the side.
Change-Id: I081d2e21206de24ad530814cb6a8ca7c3e293724
> Removing hotseat from overview in transposed layout
> Removing face scrim from recents view in transposed layout
> Removing focued background from pagesView as individual poges have focus states
Change-Id: I620527241bf7240009c4187f53f5a5cff0c3e2b1
- Hide hotseat and center recents vertically during quick scrub
- Don't animate the state change if launcher wasn't already visible, but still
wait until the window animation completes before scrubbing past the next app
- Change interpolator of window as it scales offscreen during quick scrub, so that
it gets out of the way faster and you can see the motion of the next app taking
its place
- Remove haptic when snapping to task when quick scrub starts (there's already a
haptic from the home button)
Bug: 70180755
Change-Id: I83f25bc8b791da0676c13fd62698e1f486dc016f
> Increasing the distance to travel for the first swipe
> Adding support for custom interpolators when building an animation
> When quickly swiping twice from home, finished the first animation
Change-Id: Ibc3c8667e9b927376fd99f08f0ca027f2398914b
Also make sure to reset it when setting the state without animation,
otherwise it's possible for recents to stay translated offscreen
when it's not being animated back (e.g. when swiping up after
launching an app from all apps).
Bug: 74602990
Change-Id: Ib0596c84cfb67242f436f9aba8af53556d5ca743
Swipe to dismiss animates the page translation so that the
final position at the endof swipe is same as the final position
on removing the task view.
Change-Id: I393acd5ae75cd94797bb4f1aa3dd3ec9017cbb47