diff --git a/quickstep/recents_ui_overrides/src/com/android/launcher3/LauncherAppTransitionManagerImpl.java b/quickstep/recents_ui_overrides/src/com/android/launcher3/LauncherAppTransitionManagerImpl.java index 1042c60b88..eac4dce180 100644 --- a/quickstep/recents_ui_overrides/src/com/android/launcher3/LauncherAppTransitionManagerImpl.java +++ b/quickstep/recents_ui_overrides/src/com/android/launcher3/LauncherAppTransitionManagerImpl.java @@ -121,12 +121,16 @@ public final class LauncherAppTransitionManagerImpl extends QuickstepAppTransiti alpha.setDuration(CONTENT_ALPHA_DURATION); alpha.setInterpolator(LINEAR); anim.play(alpha); + overview.setFreezeViewVisibility(true); ObjectAnimator transY = ObjectAnimator.ofFloat(overview, View.TRANSLATION_Y, trans); transY.setInterpolator(AGGRESSIVE_EASE); transY.setDuration(CONTENT_TRANSLATION_DURATION); anim.play(transY); - return mLauncher.getStateManager()::reapplyState; + return () -> { + overview.setFreezeViewVisibility(false); + mLauncher.getStateManager().reapplyState(); + }; } } diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/views/LauncherRecentsView.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/views/LauncherRecentsView.java index 8ad5f27c33..5b2e27e539 100644 --- a/quickstep/recents_ui_overrides/src/com/android/quickstep/views/LauncherRecentsView.java +++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/views/LauncherRecentsView.java @@ -227,6 +227,7 @@ public class LauncherRecentsView extends RecentsView implements StateL @Override public void onStateTransitionStart(LauncherState toState) { setOverviewStateEnabled(toState.overviewUi); + setFreezeViewVisibility(true); } @Override @@ -236,6 +237,7 @@ public class LauncherRecentsView extends RecentsView implements StateL reset(); } setOverlayEnabled(finalState == OVERVIEW); + setFreezeViewVisibility(false); } @Override diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/views/RecentsView.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/views/RecentsView.java index 38bd46172f..e38a315f8a 100644 --- a/quickstep/recents_ui_overrides/src/com/android/quickstep/views/RecentsView.java +++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/views/RecentsView.java @@ -188,6 +188,7 @@ public abstract class RecentsView extends PagedView impl private boolean mDwbToastShown; private boolean mDisallowScrollToClearAll; private boolean mOverlayEnabled; + private boolean mFreezeViewVisibility; /** * TODO: Call reloadIdNeeded in onTaskStackChanged. @@ -1302,7 +1303,25 @@ public abstract class RecentsView extends PagedView impl mEmptyMessagePaint.setAlpha(alphaInt); mEmptyIcon.setAlpha(alphaInt); - setVisibility(alpha > 0 ? VISIBLE : GONE); + if (alpha > 0) { + setVisibility(VISIBLE); + } else if (!mFreezeViewVisibility) { + setVisibility(GONE); + } + } + + /** + * Freezes the view visibility change. When frozen, the view will not change its visibility + * to gone due to alpha changes. + */ + public void setFreezeViewVisibility(boolean freezeViewVisibility) { + if (mFreezeViewVisibility != freezeViewVisibility) { + mFreezeViewVisibility = freezeViewVisibility; + + if (!mFreezeViewVisibility) { + setVisibility(mContentAlpha > 0 ? VISIBLE : GONE); + } + } } @Override diff --git a/src/com/android/launcher3/views/FloatingIconView.java b/src/com/android/launcher3/views/FloatingIconView.java index 95c96817a0..339681cd69 100644 --- a/src/com/android/launcher3/views/FloatingIconView.java +++ b/src/com/android/launcher3/views/FloatingIconView.java @@ -124,6 +124,7 @@ public class FloatingIconView extends View implements private boolean mIsVerticalBarLayout = false; private boolean mIsAdaptiveIcon = false; + private boolean mIsOpening; private @Nullable Drawable mBadge; private @Nullable Drawable mForeground; @@ -178,8 +179,10 @@ public class FloatingIconView extends View implements @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); - getViewTreeObserver().addOnGlobalLayoutListener(this); - mLauncher.getRotationHelper().setCurrentTransitionRequest(REQUEST_LOCK); + if (!mIsOpening) { + getViewTreeObserver().addOnGlobalLayoutListener(this); + mLauncher.getRotationHelper().setCurrentTransitionRequest(REQUEST_LOCK); + } } @Override @@ -326,7 +329,7 @@ public class FloatingIconView extends View implements * - For BubbleTextView, we return the icon bounds. */ private float getLocationBoundsForView(View v, RectF outRect) { - boolean ignoreTransform = true; + boolean ignoreTransform = !mIsOpening; if (v instanceof DeepShortcutView) { v = ((DeepShortcutView) v).getBubbleText(); ignoreTransform = false; @@ -627,6 +630,7 @@ public class FloatingIconView extends View implements view.recycle(); view.mIsVerticalBarLayout = launcher.getDeviceProfile().isVerticalBarLayout(); + view.mIsOpening = isOpening; view.mOriginalIcon = originalView; view.mPositionOut = positionOut;