Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 860accbc authored by Fan Zhang's avatar Fan Zhang Committed by Android (Google) Code Review
Browse files

Merge "Add prepainting background while swiping to dismiss."

parents e422437d ab0bc669
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -346,6 +346,7 @@
    <dimen name="homepage_card_icon_padding_start">14dp</dimen>
    <dimen name="homepage_card_text_padding_start">16dp</dimen>
    <dimen name="homepage_card_padding_end">16dp</dimen>
    <dimen name="homepage_card_corner_radius">@*android:dimen/config_dialogCornerRadius</dimen>
    <dimen name="homepage_full_card_padding_end">12dp</dimen>
    <dimen name="homepage_half_card_padding_top">12dp</dimen>
    <dimen name="homepage_half_card_padding_bottom">16dp</dimen>
+1 −1
Original line number Diff line number Diff line
@@ -418,7 +418,7 @@
        <item name="android:layout_marginStart">@dimen/homepage_card_side_margin</item>
        <item name="android:layout_marginEnd">@dimen/homepage_card_side_margin</item>
        <item name="cardBackgroundColor">@color/contextual_card_background</item>
        <item name="cardCornerRadius">@*android:dimen/config_dialogCornerRadius</item>
        <item name="cardCornerRadius">@dimen/homepage_card_corner_radius</item>
        <item name="cardElevation">0dp</item>
        <item name="strokeColor">@color/homepage_card_stroke_color</item>
        <item name="strokeWidth">1dp</item>
+37 −1
Original line number Diff line number Diff line
@@ -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) {