Animated fullscreen and desktop carousel attaching together
desktopCarouselDetachProgress:
- Controls whether desktop and fullscreen carousel is attached (RecentsView..DESKTOP_CAROUSEL_DETACH_PROGRESS)
- When fully detached (progress==1), hide the carousel (RecentsView.applyAttachAlpha)
- As the detach progress increase, we animate the other carousel away by using `getMaxHorizontalOffsetSize`, with additional maxOverscroll to make sure the other carousel won't be seen even if user overscroll RecentsView (RecentsView.updatePageOffsets)
min/max scroll changes
- When desktop and fullscreen carousel detaches, disallow scrolling to the detached carousel. This avoids quickswitching or scroll to the other carousel (RecentsView.getFirstViewIndex and RecentsView.getLastViewIndex)
State machine changes:
- On Overview states, desktop and fullscreen carousel is attached. Otherwise, they're detached, including in quick switch and home. (BaseState, RecentsState, OverviewState, BackgroundAppState)
- StateController set/animate desktopCarouselDetachProgress between the above states (BaseRecentsViewStateController, FallbackRecentsStateController)
- On swipe up gesture release and going to Overview, animate attaching back the 2 carousels (RecentsView.onPrepareGestureEndAnimation)
Bug: 353948100
Test: quick switch; swipe from home/app; scroll in Overview; with normal/3p launcher
Flag: com.android.launcher3.enable_large_desktop_windowing_tile
Change-Id: Ic4217efb07db079825a3210afd306d9ef627c873
8 files changed