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) {