Loading quickstep/src/com/android/launcher3/uioverrides/BaseRecentsViewStateController.java +0 −13 Original line number Diff line number Diff line Loading @@ -29,12 +29,9 @@ import static com.android.launcher3.states.StateAnimationConfig.SKIP_OVERVIEW; import static com.android.quickstep.views.RecentsView.ADJACENT_PAGE_HORIZONTAL_OFFSET; import static com.android.quickstep.views.RecentsView.RECENTS_GRID_PROGRESS; import static com.android.quickstep.views.RecentsView.RECENTS_SCALE_PROPERTY; import static com.android.quickstep.views.RecentsView.TASK_PRIMARY_SPLIT_TRANSLATION; import static com.android.quickstep.views.RecentsView.TASK_SECONDARY_SPLIT_TRANSLATION; import static com.android.quickstep.views.RecentsView.TASK_SECONDARY_TRANSLATION; import android.util.FloatProperty; import android.util.Pair; import androidx.annotation.NonNull; Loading @@ -43,7 +40,6 @@ import com.android.launcher3.LauncherState; import com.android.launcher3.anim.PendingAnimation; import com.android.launcher3.statemanager.StateManager.StateHandler; import com.android.launcher3.states.StateAnimationConfig; import com.android.launcher3.touch.PagedOrientationHandler; import com.android.quickstep.views.RecentsView; /** Loading Loading @@ -100,15 +96,6 @@ public abstract class BaseRecentsViewStateController<T extends RecentsView> config.getInterpolator(ANIM_OVERVIEW_TRANSLATE_X, LINEAR)); setter.setFloat(mRecentsView, TASK_SECONDARY_TRANSLATION, 0f, config.getInterpolator(ANIM_OVERVIEW_TRANSLATE_Y, LINEAR)); PagedOrientationHandler orientationHandler = ((RecentsView) mLauncher.getOverviewPanel()).getPagedOrientationHandler(); Pair<FloatProperty, FloatProperty> taskViewsFloat = orientationHandler.getSplitSelectTaskOffset( TASK_PRIMARY_SPLIT_TRANSLATION, TASK_SECONDARY_SPLIT_TRANSLATION, mLauncher.getDeviceProfile()); setter.setFloat(mRecentsView, taskViewsFloat.first, toState.getSplitSelectTranslation(mLauncher), LINEAR); setter.setFloat(mRecentsView, taskViewsFloat.second, 0, LINEAR); setter.setFloat(mRecentsView, getContentAlphaProperty(), toState.overviewUi ? 1 : 0, config.getInterpolator(ANIM_OVERVIEW_FADE, AGGRESSIVE_EASE_IN_OUT)); Loading quickstep/src/com/android/launcher3/uioverrides/RecentsViewStateController.java +49 −15 Original line number Diff line number Diff line Loading @@ -23,13 +23,17 @@ import static com.android.launcher3.states.StateAnimationConfig.ANIM_OVERVIEW_AC import static com.android.quickstep.views.RecentsView.CONTENT_ALPHA; import static com.android.quickstep.views.RecentsView.FULLSCREEN_PROGRESS; import static com.android.quickstep.views.RecentsView.TASK_MODALNESS; import static com.android.quickstep.views.RecentsView.TASK_PRIMARY_SPLIT_TRANSLATION; import static com.android.quickstep.views.RecentsView.TASK_SECONDARY_SPLIT_TRANSLATION; import static com.android.quickstep.views.TaskView.FLAG_UPDATE_ALL; import android.annotation.TargetApi; import android.os.Build; import android.util.FloatProperty; import android.util.Pair; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.android.launcher3.BaseQuickstepLauncher; import com.android.launcher3.LauncherState; Loading @@ -37,6 +41,7 @@ import com.android.launcher3.anim.AnimatorListeners; import com.android.launcher3.anim.PendingAnimation; import com.android.launcher3.anim.PropertySetter; import com.android.launcher3.states.StateAnimationConfig; import com.android.launcher3.touch.PagedOrientationHandler; import com.android.launcher3.util.MultiValueAlpha; import com.android.quickstep.views.ClearAllButton; import com.android.quickstep.views.LauncherRecentsView; Loading Loading @@ -67,11 +72,7 @@ public final class RecentsViewStateController extends // DepthController to prevent optimizations which might occlude the layers behind mLauncher.getDepthController().setHasContentBehindLauncher(state.overviewUi); if (isSplitSelectionState(state)) { mRecentsView.applySplitPrimaryScrollOffset(); } else { mRecentsView.resetSplitPrimaryScrollOffset(); } handleSplitSelectionState(state, null); } @Override Loading @@ -92,27 +93,60 @@ public final class RecentsViewStateController extends builder.addListener(AnimatorListeners.forSuccessCallback(() -> mLauncher.getDepthController().setHasContentBehindLauncher(toState.overviewUi))); // Create or dismiss split screen select animations handleSplitSelectionState(toState, builder); setAlphas(builder, config, toState); builder.setFloat(mRecentsView, FULLSCREEN_PROGRESS, toState.getOverviewFullscreenProgress(), LINEAR); } /** * Create or dismiss split screen select animations. * @param builder if null then this will run the split select animations right away, otherwise * will add animations to builder. */ private void handleSplitSelectionState(@NonNull LauncherState toState, @Nullable PendingAnimation builder) { LauncherState currentState = mLauncher.getStateManager().getState(); if (isSplitSelectionState(toState) && !isSplitSelectionState(currentState)) { builder.add(mRecentsView.createSplitSelectInitAnimation().buildAnim()); boolean animate = builder != null; PagedOrientationHandler orientationHandler = ((RecentsView) mLauncher.getOverviewPanel()).getPagedOrientationHandler(); Pair<FloatProperty, FloatProperty> taskViewsFloat = orientationHandler.getSplitSelectTaskOffset( TASK_PRIMARY_SPLIT_TRANSLATION, TASK_SECONDARY_SPLIT_TRANSLATION, mLauncher.getDeviceProfile()); if (isSplitSelectionState(currentState, toState)) { // Animation to "dismiss" selected taskView PendingAnimation splitSelectInitAnimation = mRecentsView.createSplitSelectInitAnimation(); // Add properties to shift remaining taskViews to get out of placeholder view splitSelectInitAnimation.setFloat(mRecentsView, taskViewsFloat.first, toState.getSplitSelectTranslation(mLauncher), LINEAR); splitSelectInitAnimation.setFloat(mRecentsView, taskViewsFloat.second, 0, LINEAR); if (!animate && isSplitSelectionState(currentState, toState)) { splitSelectInitAnimation.buildAnim().start(); } else if (animate && isSplitSelectionState(currentState, toState)) { builder.add(splitSelectInitAnimation.buildAnim()); } if (isSplitSelectionState(toState)) { } if (isSplitSelectionState(currentState, toState)) { mRecentsView.applySplitPrimaryScrollOffset(); } else { mRecentsView.resetSplitPrimaryScrollOffset(); } setAlphas(builder, config, toState); builder.setFloat(mRecentsView, FULLSCREEN_PROGRESS, toState.getOverviewFullscreenProgress(), LINEAR); } /** * @return true if {@param toState} is {@link LauncherState#OVERVIEW_SPLIT_SELECT} * and {@param fromState} is not {@link LauncherState#OVERVIEW_SPLIT_SELECT} */ private boolean isSplitSelectionState(@NonNull LauncherState toState) { return toState == OVERVIEW_SPLIT_SELECT; private boolean isSplitSelectionState(@NonNull LauncherState fromState, @NonNull LauncherState toState) { return fromState != OVERVIEW_SPLIT_SELECT && toState == OVERVIEW_SPLIT_SELECT; } private void setAlphas(PropertySetter propertySetter, StateAnimationConfig config, Loading quickstep/src/com/android/quickstep/TaskShortcutFactory.java +1 −0 Original line number Diff line number Diff line Loading @@ -242,6 +242,7 @@ public interface TaskShortcutFactory { } } /** @Deprecated */ TaskShortcutFactory SPLIT_SCREEN = new MultiWindowFactory(R.drawable.ic_split_screen, R.string.recent_task_option_split_screen, LAUNCHER_SYSTEM_SHORTCUT_SPLIT_SCREEN_TAP) { Loading quickstep/src/com/android/quickstep/util/SplitSelectStateController.java +0 −7 Original line number Diff line number Diff line Loading @@ -64,7 +64,6 @@ public class SplitSelectStateController { private @StagePosition int mStagePosition; private Task mInitialTask; private Task mSecondTask; private Rect mInitialBounds; private boolean mRecentsAnimationRunning; /** If not null, this is the TaskView we want to launch from */ @Nullable Loading @@ -86,7 +85,6 @@ public class SplitSelectStateController { Rect initialBounds) { mInitialTask = task; mStagePosition = stagePosition; mInitialBounds = initialBounds; } /** Loading Loading @@ -229,7 +227,6 @@ public class SplitSelectStateController { mInitialTask = null; mSecondTask = null; mStagePosition = SplitConfigurationOptions.STAGE_POSITION_UNDEFINED; mInitialBounds = null; mRecentsAnimationRunning = false; mLaunchingTaskView = null; } Loading @@ -241,8 +238,4 @@ public class SplitSelectStateController { public boolean isSplitSelectActive() { return mInitialTask != null && mSecondTask == null; } public Rect getInitialBounds() { return mInitialBounds; } } quickstep/src/com/android/quickstep/views/RecentsView.java +1 −1 Original line number Diff line number Diff line Loading @@ -3994,7 +3994,7 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T } /** TODO(b/181707736) More gracefully handle exiting split selection state */ private void resetFromSplitSelectionState() { protected void resetFromSplitSelectionState() { if (mSplitHiddenTaskViewIndex == -1) { return; } Loading Loading
quickstep/src/com/android/launcher3/uioverrides/BaseRecentsViewStateController.java +0 −13 Original line number Diff line number Diff line Loading @@ -29,12 +29,9 @@ import static com.android.launcher3.states.StateAnimationConfig.SKIP_OVERVIEW; import static com.android.quickstep.views.RecentsView.ADJACENT_PAGE_HORIZONTAL_OFFSET; import static com.android.quickstep.views.RecentsView.RECENTS_GRID_PROGRESS; import static com.android.quickstep.views.RecentsView.RECENTS_SCALE_PROPERTY; import static com.android.quickstep.views.RecentsView.TASK_PRIMARY_SPLIT_TRANSLATION; import static com.android.quickstep.views.RecentsView.TASK_SECONDARY_SPLIT_TRANSLATION; import static com.android.quickstep.views.RecentsView.TASK_SECONDARY_TRANSLATION; import android.util.FloatProperty; import android.util.Pair; import androidx.annotation.NonNull; Loading @@ -43,7 +40,6 @@ import com.android.launcher3.LauncherState; import com.android.launcher3.anim.PendingAnimation; import com.android.launcher3.statemanager.StateManager.StateHandler; import com.android.launcher3.states.StateAnimationConfig; import com.android.launcher3.touch.PagedOrientationHandler; import com.android.quickstep.views.RecentsView; /** Loading Loading @@ -100,15 +96,6 @@ public abstract class BaseRecentsViewStateController<T extends RecentsView> config.getInterpolator(ANIM_OVERVIEW_TRANSLATE_X, LINEAR)); setter.setFloat(mRecentsView, TASK_SECONDARY_TRANSLATION, 0f, config.getInterpolator(ANIM_OVERVIEW_TRANSLATE_Y, LINEAR)); PagedOrientationHandler orientationHandler = ((RecentsView) mLauncher.getOverviewPanel()).getPagedOrientationHandler(); Pair<FloatProperty, FloatProperty> taskViewsFloat = orientationHandler.getSplitSelectTaskOffset( TASK_PRIMARY_SPLIT_TRANSLATION, TASK_SECONDARY_SPLIT_TRANSLATION, mLauncher.getDeviceProfile()); setter.setFloat(mRecentsView, taskViewsFloat.first, toState.getSplitSelectTranslation(mLauncher), LINEAR); setter.setFloat(mRecentsView, taskViewsFloat.second, 0, LINEAR); setter.setFloat(mRecentsView, getContentAlphaProperty(), toState.overviewUi ? 1 : 0, config.getInterpolator(ANIM_OVERVIEW_FADE, AGGRESSIVE_EASE_IN_OUT)); Loading
quickstep/src/com/android/launcher3/uioverrides/RecentsViewStateController.java +49 −15 Original line number Diff line number Diff line Loading @@ -23,13 +23,17 @@ import static com.android.launcher3.states.StateAnimationConfig.ANIM_OVERVIEW_AC import static com.android.quickstep.views.RecentsView.CONTENT_ALPHA; import static com.android.quickstep.views.RecentsView.FULLSCREEN_PROGRESS; import static com.android.quickstep.views.RecentsView.TASK_MODALNESS; import static com.android.quickstep.views.RecentsView.TASK_PRIMARY_SPLIT_TRANSLATION; import static com.android.quickstep.views.RecentsView.TASK_SECONDARY_SPLIT_TRANSLATION; import static com.android.quickstep.views.TaskView.FLAG_UPDATE_ALL; import android.annotation.TargetApi; import android.os.Build; import android.util.FloatProperty; import android.util.Pair; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.android.launcher3.BaseQuickstepLauncher; import com.android.launcher3.LauncherState; Loading @@ -37,6 +41,7 @@ import com.android.launcher3.anim.AnimatorListeners; import com.android.launcher3.anim.PendingAnimation; import com.android.launcher3.anim.PropertySetter; import com.android.launcher3.states.StateAnimationConfig; import com.android.launcher3.touch.PagedOrientationHandler; import com.android.launcher3.util.MultiValueAlpha; import com.android.quickstep.views.ClearAllButton; import com.android.quickstep.views.LauncherRecentsView; Loading Loading @@ -67,11 +72,7 @@ public final class RecentsViewStateController extends // DepthController to prevent optimizations which might occlude the layers behind mLauncher.getDepthController().setHasContentBehindLauncher(state.overviewUi); if (isSplitSelectionState(state)) { mRecentsView.applySplitPrimaryScrollOffset(); } else { mRecentsView.resetSplitPrimaryScrollOffset(); } handleSplitSelectionState(state, null); } @Override Loading @@ -92,27 +93,60 @@ public final class RecentsViewStateController extends builder.addListener(AnimatorListeners.forSuccessCallback(() -> mLauncher.getDepthController().setHasContentBehindLauncher(toState.overviewUi))); // Create or dismiss split screen select animations handleSplitSelectionState(toState, builder); setAlphas(builder, config, toState); builder.setFloat(mRecentsView, FULLSCREEN_PROGRESS, toState.getOverviewFullscreenProgress(), LINEAR); } /** * Create or dismiss split screen select animations. * @param builder if null then this will run the split select animations right away, otherwise * will add animations to builder. */ private void handleSplitSelectionState(@NonNull LauncherState toState, @Nullable PendingAnimation builder) { LauncherState currentState = mLauncher.getStateManager().getState(); if (isSplitSelectionState(toState) && !isSplitSelectionState(currentState)) { builder.add(mRecentsView.createSplitSelectInitAnimation().buildAnim()); boolean animate = builder != null; PagedOrientationHandler orientationHandler = ((RecentsView) mLauncher.getOverviewPanel()).getPagedOrientationHandler(); Pair<FloatProperty, FloatProperty> taskViewsFloat = orientationHandler.getSplitSelectTaskOffset( TASK_PRIMARY_SPLIT_TRANSLATION, TASK_SECONDARY_SPLIT_TRANSLATION, mLauncher.getDeviceProfile()); if (isSplitSelectionState(currentState, toState)) { // Animation to "dismiss" selected taskView PendingAnimation splitSelectInitAnimation = mRecentsView.createSplitSelectInitAnimation(); // Add properties to shift remaining taskViews to get out of placeholder view splitSelectInitAnimation.setFloat(mRecentsView, taskViewsFloat.first, toState.getSplitSelectTranslation(mLauncher), LINEAR); splitSelectInitAnimation.setFloat(mRecentsView, taskViewsFloat.second, 0, LINEAR); if (!animate && isSplitSelectionState(currentState, toState)) { splitSelectInitAnimation.buildAnim().start(); } else if (animate && isSplitSelectionState(currentState, toState)) { builder.add(splitSelectInitAnimation.buildAnim()); } if (isSplitSelectionState(toState)) { } if (isSplitSelectionState(currentState, toState)) { mRecentsView.applySplitPrimaryScrollOffset(); } else { mRecentsView.resetSplitPrimaryScrollOffset(); } setAlphas(builder, config, toState); builder.setFloat(mRecentsView, FULLSCREEN_PROGRESS, toState.getOverviewFullscreenProgress(), LINEAR); } /** * @return true if {@param toState} is {@link LauncherState#OVERVIEW_SPLIT_SELECT} * and {@param fromState} is not {@link LauncherState#OVERVIEW_SPLIT_SELECT} */ private boolean isSplitSelectionState(@NonNull LauncherState toState) { return toState == OVERVIEW_SPLIT_SELECT; private boolean isSplitSelectionState(@NonNull LauncherState fromState, @NonNull LauncherState toState) { return fromState != OVERVIEW_SPLIT_SELECT && toState == OVERVIEW_SPLIT_SELECT; } private void setAlphas(PropertySetter propertySetter, StateAnimationConfig config, Loading
quickstep/src/com/android/quickstep/TaskShortcutFactory.java +1 −0 Original line number Diff line number Diff line Loading @@ -242,6 +242,7 @@ public interface TaskShortcutFactory { } } /** @Deprecated */ TaskShortcutFactory SPLIT_SCREEN = new MultiWindowFactory(R.drawable.ic_split_screen, R.string.recent_task_option_split_screen, LAUNCHER_SYSTEM_SHORTCUT_SPLIT_SCREEN_TAP) { Loading
quickstep/src/com/android/quickstep/util/SplitSelectStateController.java +0 −7 Original line number Diff line number Diff line Loading @@ -64,7 +64,6 @@ public class SplitSelectStateController { private @StagePosition int mStagePosition; private Task mInitialTask; private Task mSecondTask; private Rect mInitialBounds; private boolean mRecentsAnimationRunning; /** If not null, this is the TaskView we want to launch from */ @Nullable Loading @@ -86,7 +85,6 @@ public class SplitSelectStateController { Rect initialBounds) { mInitialTask = task; mStagePosition = stagePosition; mInitialBounds = initialBounds; } /** Loading Loading @@ -229,7 +227,6 @@ public class SplitSelectStateController { mInitialTask = null; mSecondTask = null; mStagePosition = SplitConfigurationOptions.STAGE_POSITION_UNDEFINED; mInitialBounds = null; mRecentsAnimationRunning = false; mLaunchingTaskView = null; } Loading @@ -241,8 +238,4 @@ public class SplitSelectStateController { public boolean isSplitSelectActive() { return mInitialTask != null && mSecondTask == null; } public Rect getInitialBounds() { return mInitialBounds; } }
quickstep/src/com/android/quickstep/views/RecentsView.java +1 −1 Original line number Diff line number Diff line Loading @@ -3994,7 +3994,7 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T } /** TODO(b/181707736) More gracefully handle exiting split selection state */ private void resetFromSplitSelectionState() { protected void resetFromSplitSelectionState() { if (mSplitHiddenTaskViewIndex == -1) { return; } Loading