Loading quickstep/src/com/android/launcher3/uioverrides/RecentsViewStateController.java +21 −15 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import static com.android.quickstep.views.RecentsView.TASK_PRIMARY_SPLIT_TRANSLA import static com.android.quickstep.views.RecentsView.TASK_SECONDARY_SPLIT_TRANSLATION; import static com.android.quickstep.views.TaskView.FLAG_UPDATE_ALL; import android.animation.AnimatorSet; import android.annotation.TargetApi; import android.os.Build; import android.util.FloatProperty; Loading Loading @@ -108,6 +109,13 @@ public final class RecentsViewStateController extends */ private void handleSplitSelectionState(@NonNull LauncherState toState, @NonNull PendingAnimation builder, boolean animate) { if (toState != OVERVIEW_SPLIT_SELECT) { // Not going to split, nothing to do but ensure taskviews are at correct offset mRecentsView.resetSplitPrimaryScrollOffset(); return; } // Create transition animations to split select PagedOrientationHandler orientationHandler = ((RecentsView) mLauncher.getOverviewPanel()).getPagedOrientationHandler(); Pair<FloatProperty, FloatProperty> taskViewsFloat = Loading @@ -115,7 +123,6 @@ public final class RecentsViewStateController extends TASK_PRIMARY_SPLIT_TRANSLATION, TASK_SECONDARY_SPLIT_TRANSLATION, mLauncher.getDeviceProfile()); if (toState == OVERVIEW_SPLIT_SELECT) { mRecentsView.createSplitSelectInitAnimation(builder, toState.getTransitionDuration(mLauncher, true /* isToState */)); // Add properties to shift remaining taskViews to get out of placeholder view Loading @@ -124,13 +131,12 @@ public final class RecentsViewStateController extends builder.setFloat(mRecentsView, taskViewsFloat.second, 0, LINEAR); if (!animate) { builder.buildAnim().start(); AnimatorSet as = builder.buildAnim(); as.start(); as.end(); } mRecentsView.applySplitPrimaryScrollOffset(); } else { mRecentsView.resetSplitPrimaryScrollOffset(); } } private void setAlphas(PropertySetter propertySetter, StateAnimationConfig config, Loading quickstep/src/com/android/quickstep/views/RecentsView.java +16 −11 Original line number Diff line number Diff line Loading @@ -2859,6 +2859,7 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T mSplitSelectStateController.getActiveSplitStagePosition(), mTempRect); RectF startingTaskRect = new RectF(); safeRemoveDragLayerView(mFirstFloatingTaskView); if (mSplitHiddenTaskView != null) { // Split staging is initiated mSplitHiddenTaskView.setThumbnailVisibility(INVISIBLE); Loading @@ -2882,6 +2883,7 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T } // SplitInstructionsView: animate in safeRemoveDragLayerView(mSplitInstructionsView); mSplitInstructionsView = SplitInstructionsView.getSplitInstructionsView(mActivity); mSplitInstructionsView.setAlpha(0); anim.setViewAlpha(mSplitInstructionsView, 1, clampToProgress(LINEAR, Loading Loading @@ -4237,6 +4239,7 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T new RectF(firstTaskStartingBounds), firstTaskEndingBounds, false /* fadeWithThumbnail */, true /* isStagedTask */); safeRemoveDragLayerView(mSecondFloatingTaskView); mSecondFloatingTaskView = FloatingTaskView.getFloatingTaskView(mActivity, thumbnailView, thumbnailView.getThumbnail(), iconView.getDrawable(), secondTaskStartingBounds); Loading Loading @@ -4269,17 +4272,13 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T @SuppressLint("WrongCall") protected void resetFromSplitSelectionState() { if (mSplitSelectSource != null || mSplitHiddenTaskViewIndex != -1) { if (mSplitInstructionsView != null) { mActivity.getDragLayer().removeView(mSplitInstructionsView); mSplitInstructionsView = null; } if (mFirstFloatingTaskView != null) { mActivity.getDragLayer().removeView(mFirstFloatingTaskView); safeRemoveDragLayerView(mFirstFloatingTaskView); safeRemoveDragLayerView(mSecondFloatingTaskView); safeRemoveDragLayerView(mSplitInstructionsView); mFirstFloatingTaskView = null; } if (mSecondFloatingTaskView != null) { mActivity.getDragLayer().removeView(mSecondFloatingTaskView); mSecondFloatingTaskView = null; mSplitInstructionsView = null; if (mSecondSplitHiddenView != null) { mSecondSplitHiddenView.setVisibility(VISIBLE); mSecondSplitHiddenView = null; } Loading Loading @@ -4307,6 +4306,12 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T } } private void safeRemoveDragLayerView(@Nullable View viewToRemove) { if (viewToRemove != null) { mActivity.getDragLayer().removeView(viewToRemove); } } /** * Returns how much additional translation there should be for each of the child TaskViews. * Note that the translation can be its primary or secondary dimension. Loading Loading
quickstep/src/com/android/launcher3/uioverrides/RecentsViewStateController.java +21 −15 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import static com.android.quickstep.views.RecentsView.TASK_PRIMARY_SPLIT_TRANSLA import static com.android.quickstep.views.RecentsView.TASK_SECONDARY_SPLIT_TRANSLATION; import static com.android.quickstep.views.TaskView.FLAG_UPDATE_ALL; import android.animation.AnimatorSet; import android.annotation.TargetApi; import android.os.Build; import android.util.FloatProperty; Loading Loading @@ -108,6 +109,13 @@ public final class RecentsViewStateController extends */ private void handleSplitSelectionState(@NonNull LauncherState toState, @NonNull PendingAnimation builder, boolean animate) { if (toState != OVERVIEW_SPLIT_SELECT) { // Not going to split, nothing to do but ensure taskviews are at correct offset mRecentsView.resetSplitPrimaryScrollOffset(); return; } // Create transition animations to split select PagedOrientationHandler orientationHandler = ((RecentsView) mLauncher.getOverviewPanel()).getPagedOrientationHandler(); Pair<FloatProperty, FloatProperty> taskViewsFloat = Loading @@ -115,7 +123,6 @@ public final class RecentsViewStateController extends TASK_PRIMARY_SPLIT_TRANSLATION, TASK_SECONDARY_SPLIT_TRANSLATION, mLauncher.getDeviceProfile()); if (toState == OVERVIEW_SPLIT_SELECT) { mRecentsView.createSplitSelectInitAnimation(builder, toState.getTransitionDuration(mLauncher, true /* isToState */)); // Add properties to shift remaining taskViews to get out of placeholder view Loading @@ -124,13 +131,12 @@ public final class RecentsViewStateController extends builder.setFloat(mRecentsView, taskViewsFloat.second, 0, LINEAR); if (!animate) { builder.buildAnim().start(); AnimatorSet as = builder.buildAnim(); as.start(); as.end(); } mRecentsView.applySplitPrimaryScrollOffset(); } else { mRecentsView.resetSplitPrimaryScrollOffset(); } } private void setAlphas(PropertySetter propertySetter, StateAnimationConfig config, Loading
quickstep/src/com/android/quickstep/views/RecentsView.java +16 −11 Original line number Diff line number Diff line Loading @@ -2859,6 +2859,7 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T mSplitSelectStateController.getActiveSplitStagePosition(), mTempRect); RectF startingTaskRect = new RectF(); safeRemoveDragLayerView(mFirstFloatingTaskView); if (mSplitHiddenTaskView != null) { // Split staging is initiated mSplitHiddenTaskView.setThumbnailVisibility(INVISIBLE); Loading @@ -2882,6 +2883,7 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T } // SplitInstructionsView: animate in safeRemoveDragLayerView(mSplitInstructionsView); mSplitInstructionsView = SplitInstructionsView.getSplitInstructionsView(mActivity); mSplitInstructionsView.setAlpha(0); anim.setViewAlpha(mSplitInstructionsView, 1, clampToProgress(LINEAR, Loading Loading @@ -4237,6 +4239,7 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T new RectF(firstTaskStartingBounds), firstTaskEndingBounds, false /* fadeWithThumbnail */, true /* isStagedTask */); safeRemoveDragLayerView(mSecondFloatingTaskView); mSecondFloatingTaskView = FloatingTaskView.getFloatingTaskView(mActivity, thumbnailView, thumbnailView.getThumbnail(), iconView.getDrawable(), secondTaskStartingBounds); Loading Loading @@ -4269,17 +4272,13 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T @SuppressLint("WrongCall") protected void resetFromSplitSelectionState() { if (mSplitSelectSource != null || mSplitHiddenTaskViewIndex != -1) { if (mSplitInstructionsView != null) { mActivity.getDragLayer().removeView(mSplitInstructionsView); mSplitInstructionsView = null; } if (mFirstFloatingTaskView != null) { mActivity.getDragLayer().removeView(mFirstFloatingTaskView); safeRemoveDragLayerView(mFirstFloatingTaskView); safeRemoveDragLayerView(mSecondFloatingTaskView); safeRemoveDragLayerView(mSplitInstructionsView); mFirstFloatingTaskView = null; } if (mSecondFloatingTaskView != null) { mActivity.getDragLayer().removeView(mSecondFloatingTaskView); mSecondFloatingTaskView = null; mSplitInstructionsView = null; if (mSecondSplitHiddenView != null) { mSecondSplitHiddenView.setVisibility(VISIBLE); mSecondSplitHiddenView = null; } Loading Loading @@ -4307,6 +4306,12 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T } } private void safeRemoveDragLayerView(@Nullable View viewToRemove) { if (viewToRemove != null) { mActivity.getDragLayer().removeView(viewToRemove); } } /** * Returns how much additional translation there should be for each of the child TaskViews. * Note that the translation can be its primary or secondary dimension. Loading