Merge "Show and update preload icons when they are in a FolderIcon preview." into ub-launcher3-dorval-polish
diff --git a/src/com/android/launcher3/anim/RoundedRectRevealOutlineProvider.java b/src/com/android/launcher3/anim/RoundedRectRevealOutlineProvider.java
index d01b26c..7c5fa1c 100644
--- a/src/com/android/launcher3/anim/RoundedRectRevealOutlineProvider.java
+++ b/src/com/android/launcher3/anim/RoundedRectRevealOutlineProvider.java
@@ -56,7 +56,7 @@
 
     @Override
     public boolean shouldRemoveElevationDuringAnimation() {
-        return false;
+        return true;
     }
 
     @Override
diff --git a/src/com/android/launcher3/folder/Folder.java b/src/com/android/launcher3/folder/Folder.java
index fc25c9a..2838351 100644
--- a/src/com/android/launcher3/folder/Folder.java
+++ b/src/com/android/launcher3/folder/Folder.java
@@ -791,8 +791,11 @@
         mDragController.removeDropTarget(this);
         clearFocus();
         if (mFolderIcon != null) {
-            mFolderIcon.setBackgroundVisible(true);
             mFolderIcon.setVisibility(View.VISIBLE);
+            if (FeatureFlags.LAUNCHER3_NEW_FOLDER_ANIMATION) {
+                mFolderIcon.setBackgroundVisible(true);
+                mFolderIcon.mBackground.fadeInBackgroundShadow();
+            }
             if (wasAnimated) {
                 mFolderIcon.mBackground.animateBackgroundStroke();
                 if (mFolderIcon.hasBadge()) {
diff --git a/src/com/android/launcher3/folder/FolderAnimationManager.java b/src/com/android/launcher3/folder/FolderAnimationManager.java
index bb2d1a2..74e8d3b 100644
--- a/src/com/android/launcher3/folder/FolderAnimationManager.java
+++ b/src/com/android/launcher3/folder/FolderAnimationManager.java
@@ -221,6 +221,12 @@
                 mFolder.setTranslationY(0.0f);
                 mFolder.setScaleX(1f);
                 mFolder.setScaleY(1f);
+
+                if (mIsOpening) {
+                    getAnimator(mFolder, View.TRANSLATION_Z, -mFolder.getElevation(), 0)
+                            .setDuration(150)
+                            .start();
+                }
             }
         });
 
diff --git a/src/com/android/launcher3/folder/FolderIcon.java b/src/com/android/launcher3/folder/FolderIcon.java
index f3b7fbe..b6f05f3 100644
--- a/src/com/android/launcher3/folder/FolderIcon.java
+++ b/src/com/android/launcher3/folder/FolderIcon.java
@@ -557,6 +557,7 @@
         private int mBgColor;
         private float mStrokeWidth;
         private int mStrokeAlpha = MAX_BG_OPACITY;
+        private int mShadowAlpha = 255;
         private View mInvalidateDelegate;
 
         public int previewSize;
@@ -582,6 +583,7 @@
 
         ValueAnimator mScaleAnimator;
         ObjectAnimator mStrokeAlphaAnimator;
+        ObjectAnimator mShadowAnimator;
 
         private static final Property<PreviewBackground, Integer> STROKE_ALPHA =
                 new Property<PreviewBackground, Integer>(Integer.class, "strokeAlpha") {
@@ -597,6 +599,20 @@
                     }
                 };
 
+        private static final Property<PreviewBackground, Integer> SHADOW_ALPHA =
+                new Property<PreviewBackground, Integer>(Integer.class, "shadowAlpha") {
+                    @Override
+                    public Integer get(PreviewBackground previewBackground) {
+                        return previewBackground.mShadowAlpha;
+                    }
+
+                    @Override
+                    public void set(PreviewBackground previewBackground, Integer alpha) {
+                        previewBackground.mShadowAlpha = alpha;
+                        previewBackground.invalidate();
+                    }
+                };
+
         public void setup(Launcher launcher, View invalidateDelegate,
                    int availableSpace, int topPadding) {
             mInvalidateDelegate = invalidateDelegate;
@@ -694,10 +710,11 @@
             mShaderMatrix.setScale(shadowRadius, shadowRadius);
             mShaderMatrix.postTranslate(radius + offsetX, shadowRadius + offsetY);
             mShadowShader.setLocalMatrix(mShaderMatrix);
+            mPaint.setAlpha(mShadowAlpha);
             mPaint.setShader(mShadowShader);
             canvas.drawPaint(mPaint);
+            mPaint.setAlpha(255);
             mPaint.setShader(null);
-
             if (canvas.isHardwareAccelerated()) {
                 mPaint.setXfermode(mShadowPorterDuffXfermode);
                 canvas.drawCircle(radius + offsetX, radius + offsetY, radius, mPaint);
@@ -707,6 +724,22 @@
             canvas.restoreToCount(saveCount);
         }
 
+        public void fadeInBackgroundShadow() {
+            if (mShadowAnimator != null) {
+                mShadowAnimator.cancel();
+            }
+            mShadowAnimator = ObjectAnimator
+                    .ofInt(this, SHADOW_ALPHA, 0, 255)
+                    .setDuration(100);
+            mShadowAnimator.addListener(new AnimatorListenerAdapter() {
+                @Override
+                public void onAnimationEnd(Animator animation) {
+                    mShadowAnimator = null;
+                }
+            });
+            mShadowAnimator.start();
+        }
+
         public void animateBackgroundStroke() {
             if (mStrokeAlphaAnimator != null) {
                 mStrokeAlphaAnimator.cancel();
diff --git a/src_flags/com/android/launcher3/config/FeatureFlags.java b/src_flags/com/android/launcher3/config/FeatureFlags.java
index 40200c5..42a110c 100644
--- a/src_flags/com/android/launcher3/config/FeatureFlags.java
+++ b/src_flags/com/android/launcher3/config/FeatureFlags.java
@@ -37,7 +37,7 @@
     // When enabled while all-apps open, the soft input will be set to adjust resize .
     public static boolean LAUNCHER3_UPDATE_SOFT_INPUT_MODE = true;
     // When enabled the promise icon is visible in all apps while installation an app.
-    public static boolean LAUNCHER3_PROMISE_APPS_IN_ALL_APPS = true;
+    public static boolean LAUNCHER3_PROMISE_APPS_IN_ALL_APPS = false;
     // When enabled uses the AllAppsRadialGradientAndScrimDrawable for all apps
     public static boolean LAUNCHER3_GRADIENT_ALL_APPS = true;
     // When enabled allows use of physics based motions in the Launcher.