Loading quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java +15 −0 Original line number Diff line number Diff line Loading @@ -65,6 +65,7 @@ import com.android.launcher3.util.ActivityOptionsWrapper; import com.android.launcher3.util.DisplayController; import com.android.launcher3.util.IntSet; import com.android.launcher3.util.ObjectWrapper; import com.android.launcher3.util.RunnableList; import com.android.launcher3.util.SplitConfigurationOptions.SplitPositionOption; import com.android.launcher3.util.UiThreadHelper; import com.android.quickstep.OverviewCommandHelper; Loading Loading @@ -496,6 +497,20 @@ public abstract class BaseQuickstepLauncher extends Launcher WellbeingModel.INSTANCE.get(this); } @Override public void onInitialBindComplete(IntSet boundPages, RunnableList pendingTasks) { pendingTasks.add(() -> { // This is added in pending task as we need to wait for views to be positioned // correctly before registering them for the animation. if (mLauncherUnfoldAnimationController != null) { // This is needed in case items are rebound while the unfold animation is in // progress. mLauncherUnfoldAnimationController.updateRegisteredViewsIfNeeded(); } }); super.onInitialBindComplete(boundPages, pendingTasks); } @Override public Stream<SystemShortcut.Factory> getSupportedShortcuts() { Stream<SystemShortcut.Factory> base = Stream.of(WellbeingModel.SHORTCUT_FACTORY); Loading quickstep/src/com/android/quickstep/util/BaseUnfoldMoveFromCenterAnimator.java +19 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,8 @@ public abstract class BaseUnfoldMoveFromCenterAnimator implements TransitionProg private final Map<ViewGroup, Boolean> mOriginalClipToPadding = new HashMap<>(); private final Map<ViewGroup, Boolean> mOriginalClipChildren = new HashMap<>(); private boolean mAnimationInProgress = false; public BaseUnfoldMoveFromCenterAnimator(WindowManager windowManager) { mMoveFromCenterAnimation = new UnfoldMoveFromCenterAnimator(windowManager, new LauncherViewsMoveFromCenterTranslationApplier()); Loading @@ -44,6 +46,7 @@ public abstract class BaseUnfoldMoveFromCenterAnimator implements TransitionProg @CallSuper @Override public void onTransitionStarted() { mAnimationInProgress = true; mMoveFromCenterAnimation.updateDisplayProperties(); onPrepareViewsForAnimation(); onTransitionProgress(0f); Loading @@ -58,7 +61,23 @@ public abstract class BaseUnfoldMoveFromCenterAnimator implements TransitionProg @CallSuper @Override public void onTransitionFinished() { mAnimationInProgress = false; mMoveFromCenterAnimation.onTransitionFinished(); clearRegisteredViews(); } /** * Re-prepares views for animation. This is useful in case views are re-bound while the * animation is in progress. */ public void updateRegisteredViewsIfNeeded() { if (mAnimationInProgress) { clearRegisteredViews(); onPrepareViewsForAnimation(); } } private void clearRegisteredViews() { mMoveFromCenterAnimation.clearRegisteredViews(); mOriginalClipChildren.clear(); Loading quickstep/src/com/android/quickstep/util/LauncherUnfoldAnimationController.java +18 −11 Original line number Diff line number Diff line Loading @@ -51,13 +51,14 @@ public class LauncherUnfoldAnimationController { HOTSEAT_SCALE_PROPERTY_FACTORY.get(SCALE_INDEX_UNFOLD_ANIMATION); private final Launcher mLauncher; private final ScopedUnfoldTransitionProgressProvider mProgressProvider; private final NaturalRotationUnfoldProgressProvider mNaturalOrientationProgressProvider; private final UnfoldMoveFromCenterHotseatAnimator mUnfoldMoveFromCenterHotseatAnimator; private final UnfoldMoveFromCenterWorkspaceAnimator mUnfoldMoveFromCenterWorkspaceAnimator; @Nullable private HorizontalInsettableView mQsbInsettable; private final ScopedUnfoldTransitionProgressProvider mProgressProvider; private final NaturalRotationUnfoldProgressProvider mNaturalOrientationProgressProvider; public LauncherUnfoldAnimationController( Launcher launcher, WindowManager windowManager, Loading @@ -65,21 +66,21 @@ public class LauncherUnfoldAnimationController { mLauncher = launcher; mProgressProvider = new ScopedUnfoldTransitionProgressProvider( unfoldTransitionProgressProvider); mUnfoldMoveFromCenterHotseatAnimator = new UnfoldMoveFromCenterHotseatAnimator(launcher, windowManager); mUnfoldMoveFromCenterWorkspaceAnimator = new UnfoldMoveFromCenterWorkspaceAnimator(launcher, windowManager); mNaturalOrientationProgressProvider = new NaturalRotationUnfoldProgressProvider(launcher, WindowManagerGlobal.getWindowManagerService(), mProgressProvider); mNaturalOrientationProgressProvider.init(); // Animated in all orientations mProgressProvider.addCallback(new UnfoldMoveFromCenterWorkspaceAnimator(launcher, windowManager)); mProgressProvider .addCallback(new LauncherScaleAnimationListener()); mProgressProvider.addCallback(mUnfoldMoveFromCenterWorkspaceAnimator); mProgressProvider.addCallback(new LauncherScaleAnimationListener()); // Animated only in natural orientation mNaturalOrientationProgressProvider .addCallback(new QsbAnimationListener()); mNaturalOrientationProgressProvider .addCallback(new UnfoldMoveFromCenterHotseatAnimator(launcher, windowManager)); mNaturalOrientationProgressProvider.addCallback(new QsbAnimationListener()); mNaturalOrientationProgressProvider.addCallback(mUnfoldMoveFromCenterHotseatAnimator); } /** Loading Loading @@ -111,6 +112,12 @@ public class LauncherUnfoldAnimationController { mNaturalOrientationProgressProvider.destroy(); } /** Called when launcher finished binding its items. */ public void updateRegisteredViewsIfNeeded() { mUnfoldMoveFromCenterHotseatAnimator.updateRegisteredViewsIfNeeded(); mUnfoldMoveFromCenterWorkspaceAnimator.updateRegisteredViewsIfNeeded(); } private class QsbAnimationListener implements TransitionProgressListener { @Override Loading Loading
quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java +15 −0 Original line number Diff line number Diff line Loading @@ -65,6 +65,7 @@ import com.android.launcher3.util.ActivityOptionsWrapper; import com.android.launcher3.util.DisplayController; import com.android.launcher3.util.IntSet; import com.android.launcher3.util.ObjectWrapper; import com.android.launcher3.util.RunnableList; import com.android.launcher3.util.SplitConfigurationOptions.SplitPositionOption; import com.android.launcher3.util.UiThreadHelper; import com.android.quickstep.OverviewCommandHelper; Loading Loading @@ -496,6 +497,20 @@ public abstract class BaseQuickstepLauncher extends Launcher WellbeingModel.INSTANCE.get(this); } @Override public void onInitialBindComplete(IntSet boundPages, RunnableList pendingTasks) { pendingTasks.add(() -> { // This is added in pending task as we need to wait for views to be positioned // correctly before registering them for the animation. if (mLauncherUnfoldAnimationController != null) { // This is needed in case items are rebound while the unfold animation is in // progress. mLauncherUnfoldAnimationController.updateRegisteredViewsIfNeeded(); } }); super.onInitialBindComplete(boundPages, pendingTasks); } @Override public Stream<SystemShortcut.Factory> getSupportedShortcuts() { Stream<SystemShortcut.Factory> base = Stream.of(WellbeingModel.SHORTCUT_FACTORY); Loading
quickstep/src/com/android/quickstep/util/BaseUnfoldMoveFromCenterAnimator.java +19 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,8 @@ public abstract class BaseUnfoldMoveFromCenterAnimator implements TransitionProg private final Map<ViewGroup, Boolean> mOriginalClipToPadding = new HashMap<>(); private final Map<ViewGroup, Boolean> mOriginalClipChildren = new HashMap<>(); private boolean mAnimationInProgress = false; public BaseUnfoldMoveFromCenterAnimator(WindowManager windowManager) { mMoveFromCenterAnimation = new UnfoldMoveFromCenterAnimator(windowManager, new LauncherViewsMoveFromCenterTranslationApplier()); Loading @@ -44,6 +46,7 @@ public abstract class BaseUnfoldMoveFromCenterAnimator implements TransitionProg @CallSuper @Override public void onTransitionStarted() { mAnimationInProgress = true; mMoveFromCenterAnimation.updateDisplayProperties(); onPrepareViewsForAnimation(); onTransitionProgress(0f); Loading @@ -58,7 +61,23 @@ public abstract class BaseUnfoldMoveFromCenterAnimator implements TransitionProg @CallSuper @Override public void onTransitionFinished() { mAnimationInProgress = false; mMoveFromCenterAnimation.onTransitionFinished(); clearRegisteredViews(); } /** * Re-prepares views for animation. This is useful in case views are re-bound while the * animation is in progress. */ public void updateRegisteredViewsIfNeeded() { if (mAnimationInProgress) { clearRegisteredViews(); onPrepareViewsForAnimation(); } } private void clearRegisteredViews() { mMoveFromCenterAnimation.clearRegisteredViews(); mOriginalClipChildren.clear(); Loading
quickstep/src/com/android/quickstep/util/LauncherUnfoldAnimationController.java +18 −11 Original line number Diff line number Diff line Loading @@ -51,13 +51,14 @@ public class LauncherUnfoldAnimationController { HOTSEAT_SCALE_PROPERTY_FACTORY.get(SCALE_INDEX_UNFOLD_ANIMATION); private final Launcher mLauncher; private final ScopedUnfoldTransitionProgressProvider mProgressProvider; private final NaturalRotationUnfoldProgressProvider mNaturalOrientationProgressProvider; private final UnfoldMoveFromCenterHotseatAnimator mUnfoldMoveFromCenterHotseatAnimator; private final UnfoldMoveFromCenterWorkspaceAnimator mUnfoldMoveFromCenterWorkspaceAnimator; @Nullable private HorizontalInsettableView mQsbInsettable; private final ScopedUnfoldTransitionProgressProvider mProgressProvider; private final NaturalRotationUnfoldProgressProvider mNaturalOrientationProgressProvider; public LauncherUnfoldAnimationController( Launcher launcher, WindowManager windowManager, Loading @@ -65,21 +66,21 @@ public class LauncherUnfoldAnimationController { mLauncher = launcher; mProgressProvider = new ScopedUnfoldTransitionProgressProvider( unfoldTransitionProgressProvider); mUnfoldMoveFromCenterHotseatAnimator = new UnfoldMoveFromCenterHotseatAnimator(launcher, windowManager); mUnfoldMoveFromCenterWorkspaceAnimator = new UnfoldMoveFromCenterWorkspaceAnimator(launcher, windowManager); mNaturalOrientationProgressProvider = new NaturalRotationUnfoldProgressProvider(launcher, WindowManagerGlobal.getWindowManagerService(), mProgressProvider); mNaturalOrientationProgressProvider.init(); // Animated in all orientations mProgressProvider.addCallback(new UnfoldMoveFromCenterWorkspaceAnimator(launcher, windowManager)); mProgressProvider .addCallback(new LauncherScaleAnimationListener()); mProgressProvider.addCallback(mUnfoldMoveFromCenterWorkspaceAnimator); mProgressProvider.addCallback(new LauncherScaleAnimationListener()); // Animated only in natural orientation mNaturalOrientationProgressProvider .addCallback(new QsbAnimationListener()); mNaturalOrientationProgressProvider .addCallback(new UnfoldMoveFromCenterHotseatAnimator(launcher, windowManager)); mNaturalOrientationProgressProvider.addCallback(new QsbAnimationListener()); mNaturalOrientationProgressProvider.addCallback(mUnfoldMoveFromCenterHotseatAnimator); } /** Loading Loading @@ -111,6 +112,12 @@ public class LauncherUnfoldAnimationController { mNaturalOrientationProgressProvider.destroy(); } /** Called when launcher finished binding its items. */ public void updateRegisteredViewsIfNeeded() { mUnfoldMoveFromCenterHotseatAnimator.updateRegisteredViewsIfNeeded(); mUnfoldMoveFromCenterWorkspaceAnimator.updateRegisteredViewsIfNeeded(); } private class QsbAnimationListener implements TransitionProgressListener { @Override Loading