Loading quickstep/src/com/android/launcher3/uioverrides/BaseRecentsViewStateController.java +1 −1 Original line number Diff line number Diff line Loading @@ -105,7 +105,7 @@ public abstract class BaseRecentsViewStateController<T extends RecentsView> TASK_PRIMARY_SPLIT_TRANSLATION, TASK_SECONDARY_SPLIT_TRANSLATION, mLauncher.getDeviceProfile()); setter.setFloat(mRecentsView, taskViewsFloat, toState.getOverviewSecondaryTranslation(mLauncher), LINEAR); toState.getSplitSelectTranslation(mLauncher), 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/states/SplitScreenSelectState.java +5 −2 Original line number Diff line number Diff line Loading @@ -41,11 +41,14 @@ public class SplitScreenSelectState extends OverviewState { } @Override public float getOverviewSecondaryTranslation(Launcher launcher) { public float getSplitSelectTranslation(Launcher launcher) { RecentsView recentsView = launcher.getOverviewPanel(); PagedOrientationHandler orientationHandler = recentsView.getPagedOrientationHandler(); int splitPosition = recentsView.getSplitPlaceholder().getSplitController() .getActiveSplitPositionOption().mStagePosition; if (!recentsView.shouldShiftThumbnailsForSplitSelect(splitPosition)) { return 0f; } PagedOrientationHandler orientationHandler = recentsView.getPagedOrientationHandler(); int direction = orientationHandler.getSplitTranslationDirectionFactor(splitPosition); return launcher.getResources().getDimension(R.dimen.split_placeholder_size) * direction; } Loading quickstep/src/com/android/quickstep/views/RecentsView.java +42 −0 Original line number Diff line number Diff line Loading @@ -127,6 +127,7 @@ import com.android.launcher3.util.DynamicResource; import com.android.launcher3.util.IntSet; import com.android.launcher3.util.MultiValueAlpha; import com.android.launcher3.util.ResourceBasedOverride.Overrides; import com.android.launcher3.util.SplitConfigurationOptions; import com.android.launcher3.util.SplitConfigurationOptions.SplitPositionOption; import com.android.launcher3.util.Themes; import com.android.launcher3.util.TranslateEdgeEffect; Loading Loading @@ -2417,6 +2418,47 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T return anim; } /** * @return {@code true} if one of the task thumbnails would intersect/overlap with the * {@link #mSplitPlaceholderView} */ public boolean shouldShiftThumbnailsForSplitSelect(@SplitConfigurationOptions.StagePosition int stagePosition) { if (!mActivity.getDeviceProfile().isTablet) { // Never enough space on phones return true; } else if (!mActivity.getDeviceProfile().isLandscape) { return false; } Rect splitBounds = new Rect(); float placeholderSize = getResources().getDimension(R.dimen.split_placeholder_size); // This acts as a best approximation on where the splitplaceholder view would be, // doesn't need to be exact necessarily. This also doesn't need to take translations // into account since placeholder view is not translated if (stagePosition == SplitConfigurationOptions.STAGE_POSITION_BOTTOM_OR_RIGHT) { splitBounds.set((int) (getWidth() - placeholderSize), 0, getWidth(), getHeight()); } else { splitBounds.set(0, 0, (int) (placeholderSize), getHeight()); } Rect taskBounds = new Rect(); int taskCount = getTaskViewCount(); for (int i = 0; i < taskCount; i++) { TaskView taskView = getTaskViewAt(i); if (taskView == mSplitHiddenTaskView && taskView != getFocusedTaskView()) { // Case where the hidden task view would have overlapped w/ placeholder, // but because it's going to hide we don't care // TODO (b/187312247) edge case for thumbnails that are off screen but scroll on continue; } taskView.getBoundsOnScreen(taskBounds); if (Rect.intersects(taskBounds, splitBounds)) { return true; } } return false; } protected void onDismissAnimationEnds() { } Loading src/com/android/launcher3/LauncherState.java +3 −3 Original line number Diff line number Diff line Loading @@ -237,10 +237,10 @@ public abstract class LauncherState implements BaseState<LauncherState> { } /** * For this state, how much additional vertical translation there should be for each of the * child TaskViews. * For this state, how much additional translation there should be for each of the * child TaskViews. Note that the translation can be its primary or secondary dimension. */ public float getOverviewSecondaryTranslation(Launcher launcher) { public float getSplitSelectTranslation(Launcher launcher) { return 0; } Loading Loading
quickstep/src/com/android/launcher3/uioverrides/BaseRecentsViewStateController.java +1 −1 Original line number Diff line number Diff line Loading @@ -105,7 +105,7 @@ public abstract class BaseRecentsViewStateController<T extends RecentsView> TASK_PRIMARY_SPLIT_TRANSLATION, TASK_SECONDARY_SPLIT_TRANSLATION, mLauncher.getDeviceProfile()); setter.setFloat(mRecentsView, taskViewsFloat, toState.getOverviewSecondaryTranslation(mLauncher), LINEAR); toState.getSplitSelectTranslation(mLauncher), 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/states/SplitScreenSelectState.java +5 −2 Original line number Diff line number Diff line Loading @@ -41,11 +41,14 @@ public class SplitScreenSelectState extends OverviewState { } @Override public float getOverviewSecondaryTranslation(Launcher launcher) { public float getSplitSelectTranslation(Launcher launcher) { RecentsView recentsView = launcher.getOverviewPanel(); PagedOrientationHandler orientationHandler = recentsView.getPagedOrientationHandler(); int splitPosition = recentsView.getSplitPlaceholder().getSplitController() .getActiveSplitPositionOption().mStagePosition; if (!recentsView.shouldShiftThumbnailsForSplitSelect(splitPosition)) { return 0f; } PagedOrientationHandler orientationHandler = recentsView.getPagedOrientationHandler(); int direction = orientationHandler.getSplitTranslationDirectionFactor(splitPosition); return launcher.getResources().getDimension(R.dimen.split_placeholder_size) * direction; } Loading
quickstep/src/com/android/quickstep/views/RecentsView.java +42 −0 Original line number Diff line number Diff line Loading @@ -127,6 +127,7 @@ import com.android.launcher3.util.DynamicResource; import com.android.launcher3.util.IntSet; import com.android.launcher3.util.MultiValueAlpha; import com.android.launcher3.util.ResourceBasedOverride.Overrides; import com.android.launcher3.util.SplitConfigurationOptions; import com.android.launcher3.util.SplitConfigurationOptions.SplitPositionOption; import com.android.launcher3.util.Themes; import com.android.launcher3.util.TranslateEdgeEffect; Loading Loading @@ -2417,6 +2418,47 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T return anim; } /** * @return {@code true} if one of the task thumbnails would intersect/overlap with the * {@link #mSplitPlaceholderView} */ public boolean shouldShiftThumbnailsForSplitSelect(@SplitConfigurationOptions.StagePosition int stagePosition) { if (!mActivity.getDeviceProfile().isTablet) { // Never enough space on phones return true; } else if (!mActivity.getDeviceProfile().isLandscape) { return false; } Rect splitBounds = new Rect(); float placeholderSize = getResources().getDimension(R.dimen.split_placeholder_size); // This acts as a best approximation on where the splitplaceholder view would be, // doesn't need to be exact necessarily. This also doesn't need to take translations // into account since placeholder view is not translated if (stagePosition == SplitConfigurationOptions.STAGE_POSITION_BOTTOM_OR_RIGHT) { splitBounds.set((int) (getWidth() - placeholderSize), 0, getWidth(), getHeight()); } else { splitBounds.set(0, 0, (int) (placeholderSize), getHeight()); } Rect taskBounds = new Rect(); int taskCount = getTaskViewCount(); for (int i = 0; i < taskCount; i++) { TaskView taskView = getTaskViewAt(i); if (taskView == mSplitHiddenTaskView && taskView != getFocusedTaskView()) { // Case where the hidden task view would have overlapped w/ placeholder, // but because it's going to hide we don't care // TODO (b/187312247) edge case for thumbnails that are off screen but scroll on continue; } taskView.getBoundsOnScreen(taskBounds); if (Rect.intersects(taskBounds, splitBounds)) { return true; } } return false; } protected void onDismissAnimationEnds() { } Loading
src/com/android/launcher3/LauncherState.java +3 −3 Original line number Diff line number Diff line Loading @@ -237,10 +237,10 @@ public abstract class LauncherState implements BaseState<LauncherState> { } /** * For this state, how much additional vertical translation there should be for each of the * child TaskViews. * For this state, how much additional translation there should be for each of the * child TaskViews. Note that the translation can be its primary or secondary dimension. */ public float getOverviewSecondaryTranslation(Launcher launcher) { public float getSplitSelectTranslation(Launcher launcher) { return 0; } Loading