Loading quickstep/res/layout/overview_panel.xml +0 −7 Original line number Diff line number Diff line Loading @@ -25,13 +25,6 @@ android:clipToPadding="false" android:visibility="invisible" /> <com.android.quickstep.views.SplitPlaceholderView android:id="@+id/split_placeholder" android:layout_width="match_parent" android:layout_height="@dimen/split_placeholder_size" android:background="@android:color/darker_gray" android:visibility="gone" /> <include android:id="@+id/overview_actions_view" layout="@layout/overview_actions_container" /> Loading quickstep/src/com/android/quickstep/fallback/FallbackRecentsStateController.java +34 −0 Original line number Diff line number Diff line Loading @@ -24,14 +24,22 @@ import static com.android.launcher3.states.StateAnimationConfig.ANIM_OVERVIEW_TR import static com.android.launcher3.states.StateAnimationConfig.ANIM_OVERVIEW_TRANSLATE_Y; import static com.android.launcher3.states.StateAnimationConfig.ANIM_SCRIM_FADE; import static com.android.launcher3.states.StateAnimationConfig.SKIP_OVERVIEW; import static com.android.quickstep.fallback.RecentsState.OVERVIEW_SPLIT_SELECT; import static com.android.quickstep.views.RecentsView.ADJACENT_PAGE_HORIZONTAL_OFFSET; import static com.android.quickstep.views.RecentsView.FULLSCREEN_PROGRESS; 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_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.RecentsView.TASK_SECONDARY_TRANSLATION; import static com.android.quickstep.views.TaskView.FLAG_UPDATE_ALL; import android.util.FloatProperty; import android.util.Pair; import androidx.annotation.NonNull; import com.android.launcher3.anim.PendingAnimation; import com.android.launcher3.anim.PropertySetter; import com.android.launcher3.statemanager.StateManager.StateHandler; Loading Loading @@ -100,5 +108,31 @@ public class FallbackRecentsStateController implements StateHandler<RecentsState setter.setViewBackgroundColor(mActivity.getScrimView(), state.getScrimColor(mActivity), config.getInterpolator(ANIM_SCRIM_FADE, LINEAR)); RecentsState currentState = mActivity.getStateManager().getState(); if (isSplitSelectionState(state) && !isSplitSelectionState(currentState)) { setter.add(mRecentsView.createSplitSelectInitAnimation().buildAnim()); } Pair<FloatProperty, FloatProperty> taskViewsFloat = mRecentsView.getPagedOrientationHandler().getSplitSelectTaskOffset( TASK_PRIMARY_SPLIT_TRANSLATION, TASK_SECONDARY_SPLIT_TRANSLATION, mActivity.getDeviceProfile()); setter.setFloat(mRecentsView, taskViewsFloat.second, 0, LINEAR); if (isSplitSelectionState(state)) { mRecentsView.applySplitPrimaryScrollOffset(); setter.setFloat(mRecentsView, taskViewsFloat.first, mRecentsView.getSplitSelectTranslation(), LINEAR); } else { mRecentsView.resetSplitPrimaryScrollOffset(); setter.setFloat(mRecentsView, taskViewsFloat.first, 0, LINEAR); } } /** * @return true if {@param toState} is {@link RecentsState#OVERVIEW_SPLIT_SELECT} */ private boolean isSplitSelectionState(@NonNull RecentsState toState) { return toState == OVERVIEW_SPLIT_SELECT; } } quickstep/src/com/android/quickstep/fallback/FallbackRecentsView.java +9 −9 Original line number Diff line number Diff line Loading @@ -19,12 +19,12 @@ import static com.android.quickstep.GestureState.GestureEndTarget.RECENTS; import static com.android.quickstep.fallback.RecentsState.DEFAULT; import static com.android.quickstep.fallback.RecentsState.HOME; import static com.android.quickstep.fallback.RecentsState.MODAL_TASK; import static com.android.quickstep.fallback.RecentsState.OVERVIEW_SPLIT_SELECT; import android.animation.AnimatorSet; import android.annotation.TargetApi; import android.app.ActivityManager.RunningTaskInfo; import android.content.Context; import android.content.res.Configuration; import android.os.Build; import android.util.AttributeSet; import android.view.MotionEvent; Loading @@ -35,6 +35,7 @@ import com.android.launcher3.AbstractFloatingView; import com.android.launcher3.anim.AnimatorPlaybackController; import com.android.launcher3.anim.PendingAnimation; import com.android.launcher3.statemanager.StateManager.StateListener; import com.android.launcher3.util.SplitConfigurationOptions; import com.android.quickstep.FallbackActivityInterface; import com.android.quickstep.GestureState; import com.android.quickstep.RecentsActivity; Loading Loading @@ -206,6 +207,13 @@ public class FallbackRecentsView extends RecentsView<RecentsActivity, RecentsSta } } @Override public void initiateSplitSelect(TaskView taskView, @SplitConfigurationOptions.StagePosition int stagePosition) { super.initiateSplitSelect(taskView, stagePosition); mActivity.getStateManager().goToState(OVERVIEW_SPLIT_SELECT); } @Override public void onStateTransitionStart(RecentsState toState) { setOverviewStateEnabled(true); Loading Loading @@ -245,12 +253,4 @@ public class FallbackRecentsView extends RecentsView<RecentsActivity, RecentsSta // Do not let touch escape to siblings below this view. return result || mActivity.getStateManager().getState().overviewUi(); } @Override protected void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); // Reset modal state if full configuration changes setModalStateEnabled(false); } } quickstep/src/com/android/quickstep/fallback/RecentsState.java +2 −0 Original line number Diff line number Diff line Loading @@ -51,6 +51,8 @@ public class RecentsState implements BaseState<RecentsState> { FLAG_DISABLE_RESTORE | FLAG_NON_INTERACTIVE | FLAG_FULL_SCREEN | FLAG_OVERVIEW_UI); public static final RecentsState HOME = new RecentsState(3, 0); public static final RecentsState BG_LAUNCHER = new LauncherState(4, 0); public static final RecentsState OVERVIEW_SPLIT_SELECT = new RecentsState(5, FLAG_SHOW_AS_GRID | FLAG_SCRIM | FLAG_OVERVIEW_UI); public final int ordinal; private final int mFlags; Loading quickstep/src/com/android/quickstep/views/FloatingTaskView.java +7 −6 Original line number Diff line number Diff line Loading @@ -17,8 +17,9 @@ import android.widget.ImageView; import androidx.annotation.Nullable; import com.android.launcher3.BaseActivity; import com.android.launcher3.BaseDraggingActivity; import com.android.launcher3.InsettableFrameLayout; import com.android.launcher3.Launcher; import com.android.launcher3.LauncherAnimUtils; import com.android.launcher3.R; import com.android.launcher3.Utilities; Loading @@ -43,7 +44,7 @@ public class FloatingTaskView extends FrameLayout { private SplitPlaceholderView mSplitPlaceholderView; private RectF mStartingPosition; private final Launcher mLauncher; private final BaseDraggingActivity mActivity; private final boolean mIsRtl; private final Rect mOutline = new Rect(); private PagedOrientationHandler mOrientationHandler; Loading @@ -59,7 +60,7 @@ public class FloatingTaskView extends FrameLayout { public FloatingTaskView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); mLauncher = Launcher.getLauncher(context); mActivity = BaseActivity.fromContext(context); mIsRtl = Utilities.isRtl(getResources()); } Loading Loading @@ -114,7 +115,7 @@ public class FloatingTaskView extends FrameLayout { public void updateInitialPositionForView(TaskView originalView) { View thumbnail = originalView.getThumbnail(); Rect viewBounds = new Rect(0, 0, thumbnail.getWidth(), thumbnail.getHeight()); Utilities.getBoundsForViewInDragLayer(mLauncher.getDragLayer(), thumbnail, viewBounds, Utilities.getBoundsForViewInDragLayer(mActivity.getDragLayer(), thumbnail, viewBounds, true /* ignoreTransform */, null /* recycle */, mStartingPosition); mStartingPosition.offset(originalView.getTranslationX(), originalView.getTranslationY()); Loading Loading @@ -161,7 +162,7 @@ public class FloatingTaskView extends FrameLayout { // Position the floating view exactly on top of the original lp.topMargin = Math.round(pos.top); if (mIsRtl) { lp.setMarginStart(mLauncher.getDeviceProfile().widthPx - Math.round(pos.right)); lp.setMarginStart(mActivity.getDeviceProfile().widthPx - Math.round(pos.right)); } else { lp.setMarginStart(Math.round(pos.left)); } Loading @@ -174,7 +175,7 @@ public class FloatingTaskView extends FrameLayout { public void addAnimation(PendingAnimation animation, RectF startingBounds, Rect endBounds, View viewToCover, boolean fadeWithThumbnail) { final BaseDragLayer dragLayer = mLauncher.getDragLayer(); final BaseDragLayer dragLayer = mActivity.getDragLayer(); int[] dragLayerBounds = new int[2]; dragLayer.getLocationOnScreen(dragLayerBounds); SplitOverlayProperties prop = new SplitOverlayProperties(endBounds, Loading Loading
quickstep/res/layout/overview_panel.xml +0 −7 Original line number Diff line number Diff line Loading @@ -25,13 +25,6 @@ android:clipToPadding="false" android:visibility="invisible" /> <com.android.quickstep.views.SplitPlaceholderView android:id="@+id/split_placeholder" android:layout_width="match_parent" android:layout_height="@dimen/split_placeholder_size" android:background="@android:color/darker_gray" android:visibility="gone" /> <include android:id="@+id/overview_actions_view" layout="@layout/overview_actions_container" /> Loading
quickstep/src/com/android/quickstep/fallback/FallbackRecentsStateController.java +34 −0 Original line number Diff line number Diff line Loading @@ -24,14 +24,22 @@ import static com.android.launcher3.states.StateAnimationConfig.ANIM_OVERVIEW_TR import static com.android.launcher3.states.StateAnimationConfig.ANIM_OVERVIEW_TRANSLATE_Y; import static com.android.launcher3.states.StateAnimationConfig.ANIM_SCRIM_FADE; import static com.android.launcher3.states.StateAnimationConfig.SKIP_OVERVIEW; import static com.android.quickstep.fallback.RecentsState.OVERVIEW_SPLIT_SELECT; import static com.android.quickstep.views.RecentsView.ADJACENT_PAGE_HORIZONTAL_OFFSET; import static com.android.quickstep.views.RecentsView.FULLSCREEN_PROGRESS; 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_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.RecentsView.TASK_SECONDARY_TRANSLATION; import static com.android.quickstep.views.TaskView.FLAG_UPDATE_ALL; import android.util.FloatProperty; import android.util.Pair; import androidx.annotation.NonNull; import com.android.launcher3.anim.PendingAnimation; import com.android.launcher3.anim.PropertySetter; import com.android.launcher3.statemanager.StateManager.StateHandler; Loading Loading @@ -100,5 +108,31 @@ public class FallbackRecentsStateController implements StateHandler<RecentsState setter.setViewBackgroundColor(mActivity.getScrimView(), state.getScrimColor(mActivity), config.getInterpolator(ANIM_SCRIM_FADE, LINEAR)); RecentsState currentState = mActivity.getStateManager().getState(); if (isSplitSelectionState(state) && !isSplitSelectionState(currentState)) { setter.add(mRecentsView.createSplitSelectInitAnimation().buildAnim()); } Pair<FloatProperty, FloatProperty> taskViewsFloat = mRecentsView.getPagedOrientationHandler().getSplitSelectTaskOffset( TASK_PRIMARY_SPLIT_TRANSLATION, TASK_SECONDARY_SPLIT_TRANSLATION, mActivity.getDeviceProfile()); setter.setFloat(mRecentsView, taskViewsFloat.second, 0, LINEAR); if (isSplitSelectionState(state)) { mRecentsView.applySplitPrimaryScrollOffset(); setter.setFloat(mRecentsView, taskViewsFloat.first, mRecentsView.getSplitSelectTranslation(), LINEAR); } else { mRecentsView.resetSplitPrimaryScrollOffset(); setter.setFloat(mRecentsView, taskViewsFloat.first, 0, LINEAR); } } /** * @return true if {@param toState} is {@link RecentsState#OVERVIEW_SPLIT_SELECT} */ private boolean isSplitSelectionState(@NonNull RecentsState toState) { return toState == OVERVIEW_SPLIT_SELECT; } }
quickstep/src/com/android/quickstep/fallback/FallbackRecentsView.java +9 −9 Original line number Diff line number Diff line Loading @@ -19,12 +19,12 @@ import static com.android.quickstep.GestureState.GestureEndTarget.RECENTS; import static com.android.quickstep.fallback.RecentsState.DEFAULT; import static com.android.quickstep.fallback.RecentsState.HOME; import static com.android.quickstep.fallback.RecentsState.MODAL_TASK; import static com.android.quickstep.fallback.RecentsState.OVERVIEW_SPLIT_SELECT; import android.animation.AnimatorSet; import android.annotation.TargetApi; import android.app.ActivityManager.RunningTaskInfo; import android.content.Context; import android.content.res.Configuration; import android.os.Build; import android.util.AttributeSet; import android.view.MotionEvent; Loading @@ -35,6 +35,7 @@ import com.android.launcher3.AbstractFloatingView; import com.android.launcher3.anim.AnimatorPlaybackController; import com.android.launcher3.anim.PendingAnimation; import com.android.launcher3.statemanager.StateManager.StateListener; import com.android.launcher3.util.SplitConfigurationOptions; import com.android.quickstep.FallbackActivityInterface; import com.android.quickstep.GestureState; import com.android.quickstep.RecentsActivity; Loading Loading @@ -206,6 +207,13 @@ public class FallbackRecentsView extends RecentsView<RecentsActivity, RecentsSta } } @Override public void initiateSplitSelect(TaskView taskView, @SplitConfigurationOptions.StagePosition int stagePosition) { super.initiateSplitSelect(taskView, stagePosition); mActivity.getStateManager().goToState(OVERVIEW_SPLIT_SELECT); } @Override public void onStateTransitionStart(RecentsState toState) { setOverviewStateEnabled(true); Loading Loading @@ -245,12 +253,4 @@ public class FallbackRecentsView extends RecentsView<RecentsActivity, RecentsSta // Do not let touch escape to siblings below this view. return result || mActivity.getStateManager().getState().overviewUi(); } @Override protected void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); // Reset modal state if full configuration changes setModalStateEnabled(false); } }
quickstep/src/com/android/quickstep/fallback/RecentsState.java +2 −0 Original line number Diff line number Diff line Loading @@ -51,6 +51,8 @@ public class RecentsState implements BaseState<RecentsState> { FLAG_DISABLE_RESTORE | FLAG_NON_INTERACTIVE | FLAG_FULL_SCREEN | FLAG_OVERVIEW_UI); public static final RecentsState HOME = new RecentsState(3, 0); public static final RecentsState BG_LAUNCHER = new LauncherState(4, 0); public static final RecentsState OVERVIEW_SPLIT_SELECT = new RecentsState(5, FLAG_SHOW_AS_GRID | FLAG_SCRIM | FLAG_OVERVIEW_UI); public final int ordinal; private final int mFlags; Loading
quickstep/src/com/android/quickstep/views/FloatingTaskView.java +7 −6 Original line number Diff line number Diff line Loading @@ -17,8 +17,9 @@ import android.widget.ImageView; import androidx.annotation.Nullable; import com.android.launcher3.BaseActivity; import com.android.launcher3.BaseDraggingActivity; import com.android.launcher3.InsettableFrameLayout; import com.android.launcher3.Launcher; import com.android.launcher3.LauncherAnimUtils; import com.android.launcher3.R; import com.android.launcher3.Utilities; Loading @@ -43,7 +44,7 @@ public class FloatingTaskView extends FrameLayout { private SplitPlaceholderView mSplitPlaceholderView; private RectF mStartingPosition; private final Launcher mLauncher; private final BaseDraggingActivity mActivity; private final boolean mIsRtl; private final Rect mOutline = new Rect(); private PagedOrientationHandler mOrientationHandler; Loading @@ -59,7 +60,7 @@ public class FloatingTaskView extends FrameLayout { public FloatingTaskView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); mLauncher = Launcher.getLauncher(context); mActivity = BaseActivity.fromContext(context); mIsRtl = Utilities.isRtl(getResources()); } Loading Loading @@ -114,7 +115,7 @@ public class FloatingTaskView extends FrameLayout { public void updateInitialPositionForView(TaskView originalView) { View thumbnail = originalView.getThumbnail(); Rect viewBounds = new Rect(0, 0, thumbnail.getWidth(), thumbnail.getHeight()); Utilities.getBoundsForViewInDragLayer(mLauncher.getDragLayer(), thumbnail, viewBounds, Utilities.getBoundsForViewInDragLayer(mActivity.getDragLayer(), thumbnail, viewBounds, true /* ignoreTransform */, null /* recycle */, mStartingPosition); mStartingPosition.offset(originalView.getTranslationX(), originalView.getTranslationY()); Loading Loading @@ -161,7 +162,7 @@ public class FloatingTaskView extends FrameLayout { // Position the floating view exactly on top of the original lp.topMargin = Math.round(pos.top); if (mIsRtl) { lp.setMarginStart(mLauncher.getDeviceProfile().widthPx - Math.round(pos.right)); lp.setMarginStart(mActivity.getDeviceProfile().widthPx - Math.round(pos.right)); } else { lp.setMarginStart(Math.round(pos.left)); } Loading @@ -174,7 +175,7 @@ public class FloatingTaskView extends FrameLayout { public void addAnimation(PendingAnimation animation, RectF startingBounds, Rect endBounds, View viewToCover, boolean fadeWithThumbnail) { final BaseDragLayer dragLayer = mLauncher.getDragLayer(); final BaseDragLayer dragLayer = mActivity.getDragLayer(); int[] dragLayerBounds = new int[2]; dragLayer.getLocationOnScreen(dragLayerBounds); SplitOverlayProperties prop = new SplitOverlayProperties(endBounds, Loading