diff options
-rw-r--r-- | res/drawable/drag_shadow_background.xml | 3 | ||||
-rw-r--r-- | res/drawable/ic_drop_not_ok_badge.xml | 8 | ||||
-rw-r--r-- | res/drawable/ic_drop_ok_badge.xml | 8 | ||||
-rw-r--r-- | res/layout/drag_shadow_layout.xml | 42 | ||||
-rw-r--r-- | res/layout/drop_badge.xml | 4 | ||||
-rw-r--r-- | res/values/dimens.xml | 10 | ||||
-rw-r--r-- | src/com/android/documentsui/DragShadowBuilder.java | 29 | ||||
-rw-r--r-- | src/com/android/documentsui/DropBadgeView.java | 3 |
8 files changed, 70 insertions, 37 deletions
diff --git a/res/drawable/drag_shadow_background.xml b/res/drawable/drag_shadow_background.xml index 5940bb375..58c0e1afd 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 45c8b6dd7..402aff8f8 100644 --- a/res/drawable/ic_drop_not_ok_badge.xml +++ b/res/drawable/ic_drop_not_ok_badge.xml @@ -15,10 +15,10 @@ Copyright (C) 2016 The Android Open Source Project --> <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 48e3e838a..7f1be3151 100644 --- a/res/drawable/ic_drop_ok_badge.xml +++ b/res/drawable/ic_drop_ok_badge.xml @@ -14,10 +14,10 @@ Copyright (C) 2016 The Android Open Source Project 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 e94c443ae..0f0671820 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 485f400f2..e17fa1ce0 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 2c4ff9977..a9be865e3 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 24e037da9..2bc6dde65 100644 --- a/src/com/android/documentsui/DragShadowBuilder.java +++ b/src/com/android/documentsui/DragShadowBuilder.java @@ -18,6 +18,8 @@ package com.android.documentsui; 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 @@ public final class DragShadowBuilder extends View.DragShadowBuilder { 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 @@ public final class DragShadowBuilder extends View.DragShadowBuilder { // 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 8ed67013d..6d18af0ab 100644 --- a/src/com/android/documentsui/DropBadgeView.java +++ b/src/com/android/documentsui/DropBadgeView.java @@ -41,6 +41,7 @@ public final class DropBadgeView extends ImageView { .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 @@ public final class DropBadgeView extends ImageView { 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); } |