diff options
author | Sunny Goyal <sunnygoyal@google.com> | 2019-06-05 12:07:07 -0700 |
---|---|---|
committer | Sunny Goyal <sunnygoyal@google.com> | 2019-06-05 12:25:28 -0700 |
commit | bda6b45341a4f88e318e041f44fa37b787b6de84 (patch) | |
tree | ce5e028d6996527c1f960873360ddbbd25ce8281 | |
parent | 8d19146b7b90664e1290d1c186c93e6d17fa94e8 (diff) | |
download | android_packages_apps_Trebuchet-bda6b45341a4f88e318e041f44fa37b787b6de84.tar.gz android_packages_apps_Trebuchet-bda6b45341a4f88e318e041f44fa37b787b6de84.tar.bz2 android_packages_apps_Trebuchet-bda6b45341a4f88e318e041f44fa37b787b6de84.zip |
Fixing wrong origin when launching new task from overview
> Also removing some unnecessary layout passes during launch animation
Bug: 133226418
Change-Id: I36fe69827853366deb7c56ca25f39e20c1a0b825
4 files changed, 34 insertions, 5 deletions
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 1042c60b8..eac4dce18 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 8ad5f27c3..5b2e27e53 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<Launcher> implements StateL @Override public void onStateTransitionStart(LauncherState toState) { setOverviewStateEnabled(toState.overviewUi); + setFreezeViewVisibility(true); } @Override @@ -236,6 +237,7 @@ public class LauncherRecentsView extends RecentsView<Launcher> 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 38bd46172..e38a315f8 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<T extends BaseActivity> 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<T extends BaseActivity> 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 95c96817a..339681cd6 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; |