diff options
author | TreeHugger Robot <treehugger-gerrit@google.com> | 2022-02-15 23:22:32 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2022-02-15 23:22:32 +0000 |
commit | 940e5c732800eb258214f1c390db0b1445bdda9c (patch) | |
tree | d30eb572cb67833878ae0a2e41ef8f4eb02074f9 /quickstep | |
parent | 0a2f5b0baa0c706198ca2618bbd3ef98d6063e28 (diff) | |
parent | 12a24dca8dc1c3beccb5ce05903d076d46fba212 (diff) | |
download | Launcher3-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.java | 26 | ||||
-rw-r--r-- | quickstep/src/com/android/quickstep/views/RecentsView.java | 19 |
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(), |