Как сделать неполный свайп item`a в RecyclerView?

    import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;

import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.ItemTouchHelper;
import androidx.recyclerview.widget.RecyclerView;

import it.xabaras.android.recyclerview.swipedecorator.RecyclerViewSwipeDecorator;

import static androidx.recyclerview.widget.ItemTouchHelper.LEFT;

public class SwipeController extends ItemTouchHelper.Callback {

    Context context;
    SwipeAdapter adapter;

    public SwipeController( Context context, SwipeAdapter adapter ) {
        this.context=context;
        this.adapter=adapter;
    }

    @Override
    public int getMovementFlags( @NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder ) {
        return makeMovementFlags ( 0, LEFT );
    }

    @Override
    public boolean onMove( @NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target ) {
        return false;
    }

    @Override
    public void onSwiped( @NonNull RecyclerView.ViewHolder viewHolder, int direction ) {
        adapter.notifyItemChanged ( viewHolder.getAdapterPosition () );
    }


    @Override
    public void onChildDraw( @NonNull Canvas c, @NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive ) {
        new RecyclerViewSwipeDecorator.Builder ( c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive )
                .addSwipeLeftBackgroundColor ( ContextCompat.getColor ( context, R.color.recycler_view_item_swipe_left_background ) )
                .addSwipeLeftActionIcon ( R.drawable.like )
                .setSwipeLeftLabelColor ( Color.WHITE )
                .create ()
                .decorate ();


        if (actionState == ItemTouchHelper.ACTION_STATE_SWIPE) {
            float width=(float) viewHolder.itemView.getWidth ();
            float alpha=50.0f - Math.abs ( dX ) / width;
            viewHolder.itemView.setAlpha ( alpha );
            viewHolder.itemView.setTranslationX ( dX );

        } else {
            super.onChildDraw ( c, recyclerView, viewHolder, dX, dY,
                                actionState, isCurrentlyActive );
        }


    }
}

Как сделать свайп? Какой метод нужен?


Ответы (0 шт):