Merge "Import translations. DO NOT MERGE" into ub-launcher3-dorval-polish
diff --git a/src/com/android/launcher3/dragndrop/DragLayer.java b/src/com/android/launcher3/dragndrop/DragLayer.java
index 14f4e6c..7178c5e 100644
--- a/src/com/android/launcher3/dragndrop/DragLayer.java
+++ b/src/com/android/launcher3/dragndrop/DragLayer.java
@@ -449,6 +449,12 @@
     }
 
     @Override
+    public void setInsets(Rect insets) {
+        super.setInsets(insets);
+        setBackgroundResource(insets.top == 0 ? 0 : R.drawable.workspace_bg);
+    }
+
+    @Override
     public LayoutParams generateLayoutParams(AttributeSet attrs) {
         return new LayoutParams(getContext(), attrs);
     }
diff --git a/src/com/android/launcher3/folder/Folder.java b/src/com/android/launcher3/folder/Folder.java
index a0ceb49..1601edb 100644
--- a/src/com/android/launcher3/folder/Folder.java
+++ b/src/com/android/launcher3/folder/Folder.java
@@ -783,6 +783,7 @@
         if (mFolderIcon != null) {
             mFolderIcon.setVisibility(View.VISIBLE);
             if (wasAnimated) {
+                mFolderIcon.mBackground.animateBackgroundStroke();
                 mFolderIcon.requestFocus();
             }
         }
diff --git a/src/com/android/launcher3/folder/FolderIcon.java b/src/com/android/launcher3/folder/FolderIcon.java
index 6989a52..1680f0b 100644
--- a/src/com/android/launcher3/folder/FolderIcon.java
+++ b/src/com/android/launcher3/folder/FolderIcon.java
@@ -547,6 +547,7 @@
         private float mScale = 1f;
         private float mColorMultiplier = 1f;
         private float mStrokeWidth;
+        private int mStrokeAlpha = MAX_BG_OPACITY;
         private View mInvalidateDelegate;
 
         public int previewSize;
@@ -572,6 +573,21 @@
         private static final int SHADOW_OPACITY = 40;
 
         ValueAnimator mScaleAnimator;
+        ObjectAnimator mStrokeAlphaAnimator;
+
+        private static final Property<PreviewBackground, Integer> STROKE_ALPHA =
+                new Property<PreviewBackground, Integer>(Integer.class, "strokeAlpha") {
+                    @Override
+                    public Integer get(PreviewBackground previewBackground) {
+                        return previewBackground.mStrokeAlpha;
+                    }
+
+                    @Override
+                    public void set(PreviewBackground previewBackground, Integer alpha) {
+                        previewBackground.mStrokeAlpha = alpha;
+                        previewBackground.invalidate();
+                    }
+                };
 
         public void setup(DisplayMetrics dm, DeviceProfile grid, View invalidateDelegate,
                    int availableSpace, int topPadding) {
@@ -681,8 +697,24 @@
             canvas.restoreToCount(saveCount);
         }
 
+        public void animateBackgroundStroke() {
+            if (mStrokeAlphaAnimator != null) {
+                mStrokeAlphaAnimator.cancel();
+            }
+            mStrokeAlphaAnimator = ObjectAnimator
+                    .ofArgb(this, STROKE_ALPHA, MAX_BG_OPACITY / 2, MAX_BG_OPACITY)
+                    .setDuration(100);
+            mStrokeAlphaAnimator.addListener(new AnimatorListenerAdapter() {
+                @Override
+                public void onAnimationEnd(Animator animation) {
+                    mStrokeAlphaAnimator = null;
+                }
+            });
+            mStrokeAlphaAnimator.start();
+        }
+
         public void drawBackgroundStroke(Canvas canvas) {
-            mPaint.setColor(Color.argb(255, BG_INTENSITY, BG_INTENSITY, BG_INTENSITY));
+            mPaint.setColor(Color.argb(mStrokeAlpha, BG_INTENSITY, BG_INTENSITY, BG_INTENSITY));
             mPaint.setStyle(Paint.Style.STROKE);
             mPaint.setStrokeWidth(mStrokeWidth);
             drawCircle(canvas, 1 /* deltaRadius */);