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);
}