Java Android ItemTouchHelper部分滑动

Java Android ItemTouchHelper部分滑动,java,android,android-recyclerview,itemtouchhelper,Java,Android,Android Recyclerview,Itemtouchhelper,当我们从末端滑动时,我能够显示红色背景和删除图标。我试图实现部分滑动功能,在部分滑动时,滑动在删除图标之前停止。我试着跟着这些。但是,这对我不起作用。请给我指一下正确的方向 public class PriorityItemTouchHelperCallback extends ItemTouchHelper.Callback { private final ItemTouchHelperListener mAdapter; private Context context; public P

当我们从末端滑动时,我能够显示红色背景和删除图标。我试图实现部分滑动功能,在部分滑动时,滑动在删除图标之前停止。我试着跟着这些。但是,这对我不起作用。请给我指一下正确的方向

public class PriorityItemTouchHelperCallback extends ItemTouchHelper.Callback {

private final ItemTouchHelperListener mAdapter;
private Context context;

public PriorityItemTouchHelperCallback(
        ItemTouchHelperListener adapter, Context context) {
    mAdapter = adapter;
    this.context = context;
}


@Override
public boolean isLongPressDragEnabled() {
    return true;
}

@Override
public boolean isItemViewSwipeEnabled() {
    return true;
}

@Override
public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
    final int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN;
    final int swipeFlags = ItemTouchHelper.START;
    return makeMovementFlags(dragFlags, swipeFlags);
}

@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
    return mAdapter.onItemMove(viewHolder.getAdapterPosition(), target.getAdapterPosition());
}

@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
    mAdapter.onItemDismiss(viewHolder.getAdapterPosition());
}


@Override
public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
    if (actionState == ItemTouchHelper.ACTION_STATE_SWIPE) {
        // Get RecyclerView item from the ViewHolder
        View itemView = viewHolder.itemView;
        float height = (float) itemView.getBottom() - (float) itemView.getTop();
        float width = height / 3;

        Paint p = new Paint();
        p.setColor(Color.RED);
        if (dX > 0) {

            c.drawRect((float) itemView.getLeft(), (float) itemView.getTop(), dX,
                    (float) itemView.getBottom(), p);
        } else {

            p.setColor(Color.RED);
            RectF background = new RectF((float) itemView.getRight() + dX, (float) itemView.getTop(), (float) itemView.getRight(), (float) itemView.getBottom());
            c.drawRect(background, p);
            Bitmap icon = BitmapFactory.decodeResource(context.getResources(), R.drawable.round_delete_white_24);
            RectF icon_dest = new RectF(
                    (float) itemView.getRight() -  2 * width + width / 2,
                    (float) itemView.getTop() + width + width / 8,
                    (float) itemView.getRight() - width / 2,
                    (float) itemView.getBottom() - width - width / 8);
            c.drawBitmap(icon, null, icon_dest, p);
        }

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

}

将此行中的dx参数更改为dx/3或dx/5:

super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
由于dx参数值介于(0表示不刷卡)(1表示完全刷卡)