diff --git a/quickstep/src/com/android/launcher3/LauncherAppTransitionManagerImpl.java b/quickstep/src/com/android/launcher3/LauncherAppTransitionManagerImpl.java index 20a83b5cd0..2e63177456 100644 --- a/quickstep/src/com/android/launcher3/LauncherAppTransitionManagerImpl.java +++ b/quickstep/src/com/android/launcher3/LauncherAppTransitionManagerImpl.java @@ -204,7 +204,15 @@ public class LauncherAppTransitionManagerImpl extends LauncherAppTransitionManag mLauncher.getStateManager().setCurrentAnimation(anim); Rect windowTargetBounds = getWindowTargetBounds(targetCompats); - playIconAnimators(anim, v, windowTargetBounds); + boolean isAllOpeningTargetTrs = true; + for (int i = 0; i < targetCompats.length; i++) { + RemoteAnimationTargetCompat target = targetCompats[i]; + if (target.mode == MODE_OPENING) { + isAllOpeningTargetTrs &= target.isTranslucent; + } + if (!isAllOpeningTargetTrs) break; + } + playIconAnimators(anim, v, windowTargetBounds, !isAllOpeningTargetTrs); if (launcherClosing) { Pair launcherContentAnimator = getLauncherContentAnimator(true /* isAppOpening */); @@ -432,7 +440,8 @@ public class LauncherAppTransitionManagerImpl extends LauncherAppTransitionManag /** * Animators for the "floating view" of the view used to launch the target. */ - private void playIconAnimators(AnimatorSet appOpenAnimator, View v, Rect windowTargetBounds) { + private void playIconAnimators(AnimatorSet appOpenAnimator, View v, Rect windowTargetBounds, + boolean toggleVisibility) { final boolean isBubbleTextView = v instanceof BubbleTextView; mFloatingView = new View(mLauncher); if (isBubbleTextView && v.getTag() instanceof ItemInfoWithIcon ) { @@ -485,7 +494,9 @@ public class LauncherAppTransitionManagerImpl extends LauncherAppTransitionManag // Swap the two views in place. ((ViewGroup) mDragLayer.getParent()).addView(mFloatingView); - v.setVisibility(View.INVISIBLE); + if (toggleVisibility) { + v.setVisibility(View.INVISIBLE); + } int[] dragLayerBounds = new int[2]; mDragLayer.getLocationOnScreen(dragLayerBounds); diff --git a/src/com/android/launcher3/BubbleTextView.java b/src/com/android/launcher3/BubbleTextView.java index 4853a907a8..891ad9f1c9 100644 --- a/src/com/android/launcher3/BubbleTextView.java +++ b/src/com/android/launcher3/BubbleTextView.java @@ -341,6 +341,14 @@ public class BubbleTextView extends TextView implements ItemInfoUpdateReceiver, refreshDrawableState(); } + @Override + public void onVisibilityAggregated(boolean isVisible) { + super.onVisibilityAggregated(isVisible); + if (mIcon != null) { + mIcon.setVisible(getWindowVisibility() == VISIBLE && isShown(), false); + } + } + @Override public void onLauncherResume() { // Reset the pressed state of icon that was locked in the press state while activity diff --git a/src/com/android/launcher3/FastBitmapDrawable.java b/src/com/android/launcher3/FastBitmapDrawable.java index daf587a736..964e8b6856 100644 --- a/src/com/android/launcher3/FastBitmapDrawable.java +++ b/src/com/android/launcher3/FastBitmapDrawable.java @@ -17,6 +17,7 @@ package com.android.launcher3; import static com.android.launcher3.anim.Interpolators.ACCEL; +import static com.android.launcher3.anim.Interpolators.DEACCEL; import android.animation.ObjectAnimator; import android.graphics.Bitmap; @@ -221,8 +222,15 @@ public class FastBitmapDrawable extends Drawable { mScaleAnimation.setInterpolator(ACCEL); mScaleAnimation.start(); } else { - mScale = 1f; - invalidateSelf(); + if (isVisible()) { + mScaleAnimation = ObjectAnimator.ofFloat(this, SCALE, 1f); + mScaleAnimation.setDuration(CLICK_FEEDBACK_DURATION); + mScaleAnimation.setInterpolator(DEACCEL); + mScaleAnimation.start(); + } else { + mScale = 1f; + invalidateSelf(); + } } return true; }