diff --git a/res/values/dimens.xml b/res/values/dimens.xml index 4a65bc9f8c9..034e4a36b92 100755 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -346,6 +346,7 @@ 14dp 16dp 16dp + @*android:dimen/config_dialogCornerRadius 12dp 12dp 16dp diff --git a/res/values/styles.xml b/res/values/styles.xml index 02db995d39b..8cd22fe4e96 100644 --- a/res/values/styles.xml +++ b/res/values/styles.xml @@ -418,7 +418,7 @@ @dimen/homepage_card_side_margin @dimen/homepage_card_side_margin @color/contextual_card_background - @*android:dimen/config_dialogCornerRadius + @dimen/homepage_card_corner_radius 0dp @color/homepage_card_stroke_color 1dp diff --git a/src/com/android/settings/homepage/contextualcards/slices/SwipeDismissalDelegate.java b/src/com/android/settings/homepage/contextualcards/slices/SwipeDismissalDelegate.java index 121d4aadd5b..3564189cc50 100644 --- a/src/com/android/settings/homepage/contextualcards/slices/SwipeDismissalDelegate.java +++ b/src/com/android/settings/homepage/contextualcards/slices/SwipeDismissalDelegate.java @@ -18,6 +18,10 @@ package com.android.settings.homepage.contextualcards.slices; import android.content.Context; import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.RectF; +import android.graphics.drawable.Drawable; +import android.view.View; import android.widget.ViewFlipper; import androidx.annotation.NonNull; @@ -29,7 +33,7 @@ import com.android.settings.homepage.contextualcards.ContextualCard; public class SwipeDismissalDelegate extends ItemTouchHelper.Callback { - private static final String TAG = "DismissItemTouchHelper"; + private static final String TAG = "SwipeDismissalDelegate"; public interface Listener { void onSwiped(int position); @@ -37,10 +41,18 @@ public class SwipeDismissalDelegate extends ItemTouchHelper.Callback { private final Context mContext; private final SwipeDismissalDelegate.Listener mListener; + private final Drawable mIconDelete; + private final Paint mBgPaint; + private final int mBgCornerRadius; public SwipeDismissalDelegate(Context context, SwipeDismissalDelegate.Listener listener) { mContext = context; mListener = listener; + mIconDelete = mContext.getDrawable(R.drawable.ic_delete); + mBgPaint = new Paint(); + mBgPaint.setColor(mContext.getColor(R.color.homepage_card_dismissal_background)); + mBgCornerRadius = mContext.getResources() + .getDimensionPixelSize(R.dimen.homepage_card_corner_radius); } /** @@ -93,6 +105,30 @@ public class SwipeDismissalDelegate extends ItemTouchHelper.Callback { @NonNull RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) { super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive); + + final View itemView = viewHolder.itemView; + final int iconMargin = mContext.getResources() + .getDimensionPixelSize(R.dimen.homepage_card_dismissal_side_margin); + final int iconTop = + itemView.getTop() + (itemView.getHeight() - mIconDelete.getIntrinsicHeight()) / 2; + final int iconBottom = iconTop + mIconDelete.getIntrinsicHeight(); + + if (dX > 0) { //swipe to the right + final int iconLeft = itemView.getLeft() + iconMargin; + final int iconRight = iconLeft + mIconDelete.getIntrinsicWidth(); + final RectF rect = new RectF(itemView.getLeft(), itemView.getTop(), + itemView.getLeft() + ((int) dX) + mBgCornerRadius, itemView.getBottom()); + mIconDelete.setBounds(iconLeft, iconTop, iconRight, iconBottom); + c.drawRoundRect(rect, mBgCornerRadius, mBgCornerRadius, mBgPaint); + } else if (dX < 0) { + final int iconRight = itemView.getRight() - iconMargin; + final int iconLeft = iconRight - mIconDelete.getIntrinsicWidth(); + final RectF rect = new RectF(itemView.getRight() + ((int) dX), itemView.getTop(), + itemView.getRight(), itemView.getBottom()); + mIconDelete.setBounds(iconLeft, iconTop, iconRight, iconBottom); + c.drawRoundRect(rect, mBgCornerRadius, mBgCornerRadius, mBgPaint); + } + mIconDelete.draw(c); } private int getInitialViewId(RecyclerView.ViewHolder viewHolder) {