From 8b78c138d4dba2d66ecfba630503cd5273ed7b51 Mon Sep 17 00:00:00 2001 From: Vinit Nayak Date: Tue, 24 Aug 2021 17:24:49 -0700 Subject: [PATCH 1/2] Implement swipe gesture for staged split in landscape * Maintain task split percentages when swiping up. * Split percentages not maintained in GroupedTaskView, however. That is a TODO. Bug: 181704764, 181705607 Test: Swiped up in landscape with home rotation on/off. Portrait still works. Change-Id: Iec62abae34f6ccadf98e2afdc9409cf3160f8223 --- .../quickstep/BaseActivityInterface.java | 28 ------------- .../quickstep/util/TaskViewSimulator.java | 15 +++---- .../touch/LandscapePagedViewHandler.java | 24 +++++++++++ .../touch/PagedOrientationHandler.java | 27 +++++++++++++ .../touch/PortraitPagedViewHandler.java | 40 +++++++++++++++++++ .../util/SplitConfigurationOptions.java | 12 ++++++ 6 files changed, 109 insertions(+), 37 deletions(-) diff --git a/quickstep/src/com/android/quickstep/BaseActivityInterface.java b/quickstep/src/com/android/quickstep/BaseActivityInterface.java index e2ef3bc66d..6298bb806e 100644 --- a/quickstep/src/com/android/quickstep/BaseActivityInterface.java +++ b/quickstep/src/com/android/quickstep/BaseActivityInterface.java @@ -53,7 +53,6 @@ import com.android.launcher3.statehandlers.DepthController; import com.android.launcher3.statemanager.BaseState; import com.android.launcher3.statemanager.StatefulActivity; import com.android.launcher3.touch.PagedOrientationHandler; -import com.android.launcher3.util.SplitConfigurationOptions; import com.android.launcher3.util.WindowBounds; import com.android.launcher3.views.ScrimView; import com.android.quickstep.SysUINavigationMode.Mode; @@ -202,33 +201,6 @@ public abstract class BaseActivityInterface Date: Tue, 24 Aug 2021 19:59:30 -0700 Subject: [PATCH 2/2] Set thumbnails for GroupedTaskView based on split layout bounds Bug: 181704764 Test: Go to stage split in landscape w/ home rotation on/off, swipe up. Thumbnails aren't perfectly overlaid, polish needed Change-Id: I54e39cc5a18f527e80a664d60aca72dfd706ebdc --- .../quickstep/views/GroupedTaskView.java | 39 ++++++------------- .../android/quickstep/views/RecentsView.java | 18 ++++++--- .../touch/LandscapePagedViewHandler.java | 20 ++++++++++ .../touch/PagedOrientationHandler.java | 3 ++ .../touch/PortraitPagedViewHandler.java | 34 ++++++++++++++++ 5 files changed, 80 insertions(+), 34 deletions(-) diff --git a/quickstep/src/com/android/quickstep/views/GroupedTaskView.java b/quickstep/src/com/android/quickstep/views/GroupedTaskView.java index cd20f4bcbf..1bc7c755df 100644 --- a/quickstep/src/com/android/quickstep/views/GroupedTaskView.java +++ b/quickstep/src/com/android/quickstep/views/GroupedTaskView.java @@ -1,13 +1,10 @@ package com.android.quickstep.views; -import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; - import android.content.Context; import android.util.AttributeSet; -import android.view.ViewGroup; -import com.android.launcher3.DeviceProfile; import com.android.launcher3.R; +import com.android.launcher3.util.SplitConfigurationOptions; import com.android.quickstep.RecentsModel; import com.android.quickstep.TaskThumbnailCache; import com.android.quickstep.util.CancellableTask; @@ -48,13 +45,14 @@ public class GroupedTaskView extends TaskView { mSnapshotView2 = findViewById(R.id.bottomright_snapshot); } - public void bind(Task primary, Task secondary, RecentsOrientedState orientedState) { + public void bind(Task primary, Task secondary, RecentsOrientedState orientedState, + SplitConfigurationOptions.StagedSplitBounds splitBoundsConfig) { super.bind(primary, orientedState); mSecondaryTask = secondary; mTaskIdContainer[1] = secondary.key.id; mTaskIdAttributeContainer[1] = new TaskIdAttributeContainer(secondary, mSnapshotView2); mSnapshotView2.bind(secondary); - adjustThumbnailBoundsForSplit(); + adjustThumbnailBoundsForSplit(splitBoundsConfig, orientedState); } @Override @@ -108,30 +106,15 @@ public class GroupedTaskView extends TaskView { mSnapshotView2.setOverlayEnabled(overlayEnabled); } - private void adjustThumbnailBoundsForSplit() { - DeviceProfile deviceProfile = mActivity.getDeviceProfile(); - ViewGroup.LayoutParams primaryLp = mSnapshotView.getLayoutParams(); - primaryLp.width = mSecondaryTask == null ? - MATCH_PARENT : - getWidth(); - int spaceAboveSnapshot = deviceProfile.overviewTaskThumbnailTopMarginPx; - // TODO get divider height - int dividerBar = 20; - primaryLp.height = mSecondaryTask == null ? - MATCH_PARENT : - (getHeight() - spaceAboveSnapshot - dividerBar) / 2; - mSnapshotView.setLayoutParams(primaryLp); - - if (mSecondaryTask == null) { - mSnapshotView2.setVisibility(GONE); + private void adjustThumbnailBoundsForSplit( + SplitConfigurationOptions.StagedSplitBounds splitBoundsConfig, + RecentsOrientedState orientedState) { + if (splitBoundsConfig == null) { return; } - mSnapshotView2.setVisibility(VISIBLE); - ViewGroup.LayoutParams secondaryLp = mSnapshotView2.getLayoutParams(); - secondaryLp.width = getWidth(); - secondaryLp.height = primaryLp.height; - mSnapshotView2.setLayoutParams(secondaryLp); - mSnapshotView2.setTranslationY(primaryLp.height + spaceAboveSnapshot + dividerBar); + orientedState.getOrientationHandler().setGroupedTaskViewThumbnailBounds( + mSnapshotView, mSnapshotView2, this, splitBoundsConfig, + mActivity.getDeviceProfile()); } } diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java index abeadfd29b..763dbfb3ab 100644 --- a/quickstep/src/com/android/quickstep/views/RecentsView.java +++ b/quickstep/src/com/android/quickstep/views/RecentsView.java @@ -575,6 +575,7 @@ public abstract class RecentsView