Merge "Follow up changes to ag/1627041." into nyc-andromeda-dev
diff --git a/res/drawable/drag_shadow_background.xml b/res/drawable/drag_shadow_background.xml
index 5940bb3..58c0e1a 100644
--- a/res/drawable/drag_shadow_background.xml
+++ b/res/drawable/drag_shadow_background.xml
@@ -17,9 +17,6 @@
 <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">
   <solid android:color="@color/item_drag_shadow_background" />
-  <stroke
-      android:width="1dp"
-      android:color="#ff9f9f9f" />
   <corners
       android:bottomRightRadius="2dp"
       android:bottomLeftRadius="2dp"
diff --git a/res/drawable/ic_drop_not_ok_badge.xml b/res/drawable/ic_drop_not_ok_badge.xml
index 45c8b6d..402aff8 100644
--- a/res/drawable/ic_drop_not_ok_badge.xml
+++ b/res/drawable/ic_drop_not_ok_badge.xml
@@ -15,10 +15,10 @@
 -->
 
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="15dp"
-        android:height="15dp"
-        android:viewportWidth="30.0"
-        android:viewportHeight="30.0">
+        android:width="14dp"
+        android:height="14dp"
+        android:viewportWidth="28.0"
+        android:viewportHeight="28.0">
 
     <group
          android:name="whiteBg">
diff --git a/res/drawable/ic_drop_ok_badge.xml b/res/drawable/ic_drop_ok_badge.xml
index 48e3e83..7f1be31 100644
--- a/res/drawable/ic_drop_ok_badge.xml
+++ b/res/drawable/ic_drop_ok_badge.xml
@@ -14,10 +14,10 @@
     limitations under the License.
 -->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="15dp"
-        android:height="15dp"
-        android:viewportWidth="30.0"
-        android:viewportHeight="30.0">
+        android:width="14dp"
+        android:height="14dp"
+        android:viewportWidth="28.0"
+        android:viewportHeight="28.0">
 
     <group
          android:name="whiteBg">
diff --git a/res/layout/drag_shadow_layout.xml b/res/layout/drag_shadow_layout.xml
index e94c443..0f06718 100644
--- a/res/layout/drag_shadow_layout.xml
+++ b/res/layout/drag_shadow_layout.xml
@@ -14,25 +14,35 @@
      limitations under the License.
 -->
 
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<!-- Transparent container so shadow layer can be drawn -->
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:paddingStart="8dp"
-    android:paddingEnd="8dp"
-    android:orientation="horizontal"
-    android:gravity="center_vertical|left"
-    android:background="@drawable/drag_shadow_background">
+    android:padding="8dp"
+    android:background="@*android:color/transparent">
 
-   <include layout="@layout/drop_badge"/>
-
-    <TextView
-        android:id="@android:id/title"
+    <LinearLayout
         android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:maxLines="1"
-        android:ellipsize="end"
-        android:textAlignment="viewStart"
-        android:textColor="@color/item_title"
-        android:paddingStart="8dp"/>
+        android:layout_height="match_parent"
+        android:paddingStart="12dp"
+        android:paddingEnd="12dp"
+        android:orientation="horizontal"
+        android:gravity="center_vertical"
+        android:background="@drawable/drag_shadow_background">
 
+        <include layout="@layout/drop_badge"/>
+
+        <TextView
+            android:id="@android:id/title"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:maxLines="1"
+            android:ellipsize="end"
+            android:textAlignment="viewStart"
+            android:textColor="@color/item_title"
+            android:paddingStart="6dp"
+            android:paddingBottom="1dp"/>
+
+    </LinearLayout>
 </LinearLayout>
diff --git a/res/layout/drop_badge.xml b/res/layout/drop_badge.xml
index 485f400..e17fa1c 100644
--- a/res/layout/drop_badge.xml
+++ b/res/layout/drop_badge.xml
@@ -17,8 +17,8 @@
 <com.android.documentsui.DropBadgeView
         xmlns:android="http://schemas.android.com/apk/res/android"
         android:id="@android:id/icon"
-        android:layout_width="@dimen/root_icon_size"
-        android:layout_height="@dimen/root_icon_size"
+        android:layout_width="26dp"
+        android:layout_height="26dp"
         android:scaleType="centerInside"
         android:contentDescription="@null"
         android:duplicateParentState="true"/>
\ No newline at end of file
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 2c4ff99..a9be865 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -43,8 +43,10 @@
 
     <dimen name="drawer_edge_width">12dp</dimen>
 
-    <dimen name="drag_shadow_width">160dp</dimen>
-    <dimen name="drag_shadow_height">48dp</dimen>
+    <dimen name="drag_shadow_width">176dp</dimen>
+    <dimen name="drag_shadow_height">64dp</dimen>
+    <dimen name="drag_shadow_radius">4dp</dimen>
+    <dimen name="drag_shadow_padding">8dp</dimen>
 
     <dimen name="doc_header_sort_icon_size">16dp</dimen>
     <dimen name="doc_header_height">60dp</dimen>
@@ -52,6 +54,6 @@
     <dimen name="dropdown_sort_widget_margin">20dp</dimen>
     <dimen name="dropdown_sort_widget_icon_size">30dp</dimen>
 
-    <dimen name="drop_icon_height">15dp</dimen>
-    <dimen name="drop_icon_width">15dp</dimen>
+    <dimen name="drop_icon_height">14dp</dimen>
+    <dimen name="drop_icon_width">14dp</dimen>
 </resources>
diff --git a/src/com/android/documentsui/DragShadowBuilder.java b/src/com/android/documentsui/DragShadowBuilder.java
index 24e037d..2bc6dde 100644
--- a/src/com/android/documentsui/DragShadowBuilder.java
+++ b/src/com/android/documentsui/DragShadowBuilder.java
@@ -18,6 +18,8 @@
 
 import android.content.Context;
 import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
 import android.graphics.Point;
 import android.graphics.Rect;
 import android.graphics.drawable.Drawable;
@@ -41,18 +43,23 @@
     private final DropBadgeView mIcon;
     private final int mWidth;
     private final int mHeight;
+    private final int mShadowRadius;
+    private int mPadding;
+    private Paint paint;
 
     public DragShadowBuilder(Context context) {
         mWidth = context.getResources().getDimensionPixelSize(R.dimen.drag_shadow_width);
         mHeight = context.getResources().getDimensionPixelSize(R.dimen.drag_shadow_height);
+        mShadowRadius = context.getResources().getDimensionPixelSize(R.dimen.drag_shadow_radius);
+        mPadding = context.getResources().getDimensionPixelSize(R.dimen.drag_shadow_padding);
 
         mShadowView = LayoutInflater.from(context).inflate(R.layout.drag_shadow_layout, null);
         mTitle = (TextView) mShadowView.findViewById(android.R.id.title);
         mIcon = (DropBadgeView) mShadowView.findViewById(android.R.id.icon);
 
-        mShadowView
-                .setBackground(context.getResources().getDrawable(R.drawable.drag_shadow_background,
-                        null));
+        // Important for certain APIs
+        mShadowView.setLayerType(View.LAYER_TYPE_SOFTWARE, paint);
+        paint = new Paint(Paint.ANTI_ALIAS_FLAG);
     }
 
     @Override
@@ -68,8 +75,22 @@
         // Calling measure is necessary in order for all child views to get correctly laid out.
         mShadowView.measure(
                 View.MeasureSpec.makeMeasureSpec(r.right- r.left, View.MeasureSpec.EXACTLY),
-                View.MeasureSpec.makeMeasureSpec(r.top- r.bottom, View.MeasureSpec.EXACTLY));
+                View.MeasureSpec.makeMeasureSpec(r.bottom - r.top , View.MeasureSpec.EXACTLY));
         mShadowView.layout(r.left, r.top, r.right, r.bottom);
+
+        // Since DragShadow is not an actual view drawn in hardware-accelerated window,
+        // android:elevation does not work; we need to draw the shadow ourselves manually.
+        paint.setColor(Color.TRANSPARENT);
+        // Shadow 1
+        int opacity = (int) (255 * 0.1);
+        paint.setShadowLayer(mShadowRadius, 0, 0, Color.argb(opacity, 0, 0, 0));
+        canvas.drawRect(r.left + mPadding, r.top + mPadding, r.right - mPadding,
+                r.bottom - mPadding, paint);
+        // Shadow 2
+        opacity = (int) (255 * 0.24);
+        paint.setShadowLayer(mShadowRadius, 0, mShadowRadius, Color.argb(opacity, 0, 0, 0));
+        canvas.drawRect(r.left + mPadding, r.top + mPadding, r.right - mPadding,
+                r.bottom - mPadding, paint);
         mShadowView.draw(canvas);
     }
 
diff --git a/src/com/android/documentsui/DropBadgeView.java b/src/com/android/documentsui/DropBadgeView.java
index 8ed6701..6d18af0 100644
--- a/src/com/android/documentsui/DropBadgeView.java
+++ b/src/com/android/documentsui/DropBadgeView.java
@@ -41,6 +41,7 @@
                 .getDimensionPixelSize(R.dimen.drop_icon_height);
         final int badgeWidth = context.getResources()
                 .getDimensionPixelSize(R.dimen.drop_icon_width);
+        final int iconSize = context.getResources().getDimensionPixelSize(R.dimen.root_icon_size);
 
         Drawable okBadge = context.getResources().getDrawable(R.drawable.drop_badge_states, null);
         Drawable defaultIcon = context.getResources()
@@ -50,7 +51,9 @@
         mBackground = new LayerDrawable(list);
 
         mBackground.setLayerGravity(1, Gravity.BOTTOM | Gravity.RIGHT);
+        mBackground.setLayerGravity(0, Gravity.TOP | Gravity.LEFT);
         mBackground.setLayerSize(1, badgeWidth, badgeHeight);
+        mBackground.setLayerSize(0, iconSize, iconSize);
 
         setBackground(mBackground);
     }