summaryrefslogtreecommitdiff
path: root/quickstep
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2022-02-15 23:22:32 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2022-02-15 23:22:32 +0000
commit940e5c732800eb258214f1c390db0b1445bdda9c (patch)
treed30eb572cb67833878ae0a2e41ef8f4eb02074f9 /quickstep
parent0a2f5b0baa0c706198ca2618bbd3ef98d6063e28 (diff)
parent12a24dca8dc1c3beccb5ce05903d076d46fba212 (diff)
downloadLauncher3-940e5c732800eb258214f1c390db0b1445bdda9c.tar.gz
Merge "Cover thumbnail view instead of TaskView for split animation"
Diffstat (limited to 'quickstep')
-rw-r--r--quickstep/src/com/android/quickstep/views/FloatingTaskView.java26
-rw-r--r--quickstep/src/com/android/quickstep/views/RecentsView.java19
2 files changed, 35 insertions, 10 deletions
diff --git a/quickstep/src/com/android/quickstep/views/FloatingTaskView.java b/quickstep/src/com/android/quickstep/views/FloatingTaskView.java
index 9ae5d250b8..49e4bd3550 100644
--- a/quickstep/src/com/android/quickstep/views/FloatingTaskView.java
+++ b/quickstep/src/com/android/quickstep/views/FloatingTaskView.java
@@ -30,9 +30,11 @@ import com.android.launcher3.touch.PagedOrientationHandler;
import com.android.launcher3.views.BaseDragLayer;
import com.android.quickstep.util.MultiValueUpdateListener;
+import java.util.function.Consumer;
+
/**
* Create an instance via
- * {@link #getFloatingTaskView(StatefulActivity, View, Bitmap, Drawable, RectF)} to
+ * {@link #getFloatingTaskView(StatefulActivity, View, Bitmap, Drawable, RectF, Consumer)} to
* which will have the thumbnail from the provided existing TaskView overlaying the taskview itself.
*
* Can then animate the taskview using
@@ -46,6 +48,8 @@ public class FloatingTaskView extends FrameLayout {
private SplitPlaceholderView mSplitPlaceholderView;
private RectF mStartingPosition;
+ @Nullable
+ private Consumer<RectF> mAdditionalOffsetter;
private final StatefulActivity mActivity;
private final boolean mIsRtl;
private final Rect mOutline = new Rect();
@@ -77,8 +81,9 @@ public class FloatingTaskView extends FrameLayout {
}
private void init(StatefulActivity launcher, View originalView, @Nullable Bitmap thumbnail,
- Drawable icon, RectF positionOut) {
+ Drawable icon, RectF positionOut, Consumer<RectF> additionalOffsetter) {
mStartingPosition = positionOut;
+ mAdditionalOffsetter = additionalOffsetter;
updateInitialPositionForView(originalView);
final InsettableFrameLayout.LayoutParams lp =
(InsettableFrameLayout.LayoutParams) getLayoutParams();
@@ -102,15 +107,21 @@ public class FloatingTaskView extends FrameLayout {
/**
* Configures and returns a an instance of {@link FloatingTaskView} initially matching the
* appearance of {@code originalView}.
+ *
+ * @param additionalOffsetter optional, to set additional offsets to the FloatingTaskView
+ * to account for translations. If {@code null} then the
+ * translation values from originalView will be used
*/
public static FloatingTaskView getFloatingTaskView(StatefulActivity launcher,
- View originalView, @Nullable Bitmap thumbnail, Drawable icon, RectF positionOut) {
+ View originalView, @Nullable Bitmap thumbnail, Drawable icon, RectF positionOut,
+ @Nullable Consumer<RectF> additionalOffsetter) {
final BaseDragLayer dragLayer = launcher.getDragLayer();
ViewGroup parent = (ViewGroup) dragLayer.getParent();
final FloatingTaskView floatingView = (FloatingTaskView) launcher.getLayoutInflater()
.inflate(R.layout.floating_split_select_view, parent, false);
- floatingView.init(launcher, originalView, thumbnail, icon, positionOut);
+ floatingView.init(launcher, originalView, thumbnail, icon, positionOut,
+ additionalOffsetter);
parent.addView(floatingView);
return floatingView;
}
@@ -120,7 +131,12 @@ public class FloatingTaskView extends FrameLayout {
Utilities.getBoundsForViewInDragLayer(mActivity.getDragLayer(), originalView, viewBounds,
true /* ignoreTransform */, null /* recycle */,
mStartingPosition);
- mStartingPosition.offset(originalView.getTranslationX(), originalView.getTranslationY());
+ if (mAdditionalOffsetter != null) {
+ mAdditionalOffsetter.accept(mStartingPosition);
+ } else {
+ mStartingPosition.offset(originalView.getTranslationX(),
+ originalView.getTranslationY());
+ }
final InsettableFrameLayout.LayoutParams lp = new InsettableFrameLayout.LayoutParams(
Math.round(mStartingPosition.width()),
Math.round(mStartingPosition.height()));
diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java
index c11a8bbd37..b9ca6caddc 100644
--- a/quickstep/src/com/android/quickstep/views/RecentsView.java
+++ b/quickstep/src/com/android/quickstep/views/RecentsView.java
@@ -2727,8 +2727,13 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
if (mSplitHiddenTaskView != null) {
mSplitHiddenTaskView.setVisibility(INVISIBLE);
mFirstFloatingTaskView = FloatingTaskView.getFloatingTaskView(mActivity,
- mSplitHiddenTaskView, mSplitHiddenTaskView.getThumbnail().getThumbnail(),
- mSplitHiddenTaskView.getIconView().getDrawable(), startingTaskRect);
+ mSplitHiddenTaskView.getThumbnail(),
+ mSplitHiddenTaskView.getThumbnail().getThumbnail(),
+ mSplitHiddenTaskView.getIconView().getDrawable(), startingTaskRect,
+ floatingTaskViewStartingPosition -> floatingTaskViewStartingPosition.offset(
+ mSplitHiddenTaskView.getTranslationX(),
+ mSplitHiddenTaskView.getTranslationY()
+ ));
mFirstFloatingTaskView.setAlpha(1);
mFirstFloatingTaskView.addAnimation(anim, startingTaskRect,
mTempRect, mSplitHiddenTaskView, true /*fadeWithThumbnail*/);
@@ -2736,7 +2741,7 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
mSplitSelectSource.view.setVisibility(INVISIBLE);
mFirstFloatingTaskView = FloatingTaskView.getFloatingTaskView(mActivity,
mSplitSelectSource.view, null,
- mSplitSelectSource.drawable, startingTaskRect);
+ mSplitSelectSource.drawable, startingTaskRect, null /*additionalOffsetter*/);
mFirstFloatingTaskView.setAlpha(1);
mFirstFloatingTaskView.addAnimation(anim, startingTaskRect,
mTempRect, mSplitSelectSource.view, true /*fadeWithThumbnail*/);
@@ -4027,8 +4032,12 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
false /*fadeWithThumbnail*/);
mSecondFloatingTaskView = FloatingTaskView.getFloatingTaskView(mActivity,
- taskView, taskView.getThumbnail().getThumbnail(),
- taskView.getIconView().getDrawable(), secondTaskStartingBounds);
+ taskView.getThumbnail(), taskView.getThumbnail().getThumbnail(),
+ taskView.getIconView().getDrawable(), secondTaskStartingBounds,
+ floatingTaskViewStartingPosition -> floatingTaskViewStartingPosition.offset(
+ taskView.getTranslationX(),
+ taskView.getTranslationY()
+ ));
mSecondFloatingTaskView.setAlpha(1);
mSecondFloatingTaskView.addAnimation(pendingAnimation, secondTaskStartingBounds,
secondTaskEndingBounds, taskView.getThumbnail(),