135 lines
5.7 KiB
Java
135 lines
5.7 KiB
Java
package com.chad.library.adapter.base.callback;
|
|
|
|
import android.graphics.Canvas;
|
|
import android.view.View;
|
|
import androidx.recyclerview.widget.ItemTouchHelper;
|
|
import androidx.recyclerview.widget.RecyclerView;
|
|
import com.chad.library.R$id;
|
|
import com.chad.library.adapter.base.BaseItemDraggableAdapter;
|
|
|
|
/* loaded from: classes.dex */
|
|
public class ItemDragAndSwipeCallback extends ItemTouchHelper.Callback {
|
|
private BaseItemDraggableAdapter mAdapter;
|
|
private float mMoveThreshold = 0.1f;
|
|
private float mSwipeThreshold = 0.7f;
|
|
private int mDragMoveFlags = 15;
|
|
private int mSwipeMoveFlags = 32;
|
|
|
|
public ItemDragAndSwipeCallback(BaseItemDraggableAdapter baseItemDraggableAdapter) {
|
|
this.mAdapter = baseItemDraggableAdapter;
|
|
}
|
|
|
|
private boolean isViewCreateByAdapter(RecyclerView.ViewHolder viewHolder) {
|
|
int itemViewType = viewHolder.getItemViewType();
|
|
return itemViewType == 273 || itemViewType == 546 || itemViewType == 819 || itemViewType == 1365;
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.ItemTouchHelper.Callback
|
|
public void clearView(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
|
|
super.clearView(recyclerView, viewHolder);
|
|
if (isViewCreateByAdapter(viewHolder)) {
|
|
return;
|
|
}
|
|
if (viewHolder.itemView.getTag(R$id.BaseQuickAdapter_dragging_support) != null && ((Boolean) viewHolder.itemView.getTag(R$id.BaseQuickAdapter_dragging_support)).booleanValue()) {
|
|
this.mAdapter.onItemDragEnd(viewHolder);
|
|
viewHolder.itemView.setTag(R$id.BaseQuickAdapter_dragging_support, false);
|
|
}
|
|
if (viewHolder.itemView.getTag(R$id.BaseQuickAdapter_swiping_support) == null || !((Boolean) viewHolder.itemView.getTag(R$id.BaseQuickAdapter_swiping_support)).booleanValue()) {
|
|
return;
|
|
}
|
|
this.mAdapter.onItemSwipeClear(viewHolder);
|
|
viewHolder.itemView.setTag(R$id.BaseQuickAdapter_swiping_support, false);
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.ItemTouchHelper.Callback
|
|
public float getMoveThreshold(RecyclerView.ViewHolder viewHolder) {
|
|
return this.mMoveThreshold;
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.ItemTouchHelper.Callback
|
|
public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
|
|
return isViewCreateByAdapter(viewHolder) ? ItemTouchHelper.Callback.makeMovementFlags(0, 0) : ItemTouchHelper.Callback.makeMovementFlags(this.mDragMoveFlags, this.mSwipeMoveFlags);
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.ItemTouchHelper.Callback
|
|
public float getSwipeThreshold(RecyclerView.ViewHolder viewHolder) {
|
|
return this.mSwipeThreshold;
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.ItemTouchHelper.Callback
|
|
public boolean isItemViewSwipeEnabled() {
|
|
return this.mAdapter.isItemSwipeEnable();
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.ItemTouchHelper.Callback
|
|
public boolean isLongPressDragEnabled() {
|
|
return false;
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.ItemTouchHelper.Callback
|
|
public void onChildDrawOver(Canvas canvas, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float f, float f2, int i, boolean z) {
|
|
super.onChildDrawOver(canvas, recyclerView, viewHolder, f, f2, i, z);
|
|
if (i != 1 || isViewCreateByAdapter(viewHolder)) {
|
|
return;
|
|
}
|
|
View view = viewHolder.itemView;
|
|
canvas.save();
|
|
if (f > 0.0f) {
|
|
canvas.clipRect(view.getLeft(), view.getTop(), view.getLeft() + f, view.getBottom());
|
|
canvas.translate(view.getLeft(), view.getTop());
|
|
} else {
|
|
canvas.clipRect(view.getRight() + f, view.getTop(), view.getRight(), view.getBottom());
|
|
canvas.translate(view.getRight() + f, view.getTop());
|
|
}
|
|
this.mAdapter.onItemSwiping(canvas, viewHolder, f, f2, z);
|
|
canvas.restore();
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.ItemTouchHelper.Callback
|
|
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder viewHolder2) {
|
|
return viewHolder.getItemViewType() == viewHolder2.getItemViewType();
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.ItemTouchHelper.Callback
|
|
public void onMoved(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, int i, RecyclerView.ViewHolder viewHolder2, int i2, int i3, int i4) {
|
|
super.onMoved(recyclerView, viewHolder, i, viewHolder2, i2, i3, i4);
|
|
this.mAdapter.onItemDragMoving(viewHolder, viewHolder2);
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.ItemTouchHelper.Callback
|
|
public void onSelectedChanged(RecyclerView.ViewHolder viewHolder, int i) {
|
|
if (i == 2 && !isViewCreateByAdapter(viewHolder)) {
|
|
this.mAdapter.onItemDragStart(viewHolder);
|
|
viewHolder.itemView.setTag(R$id.BaseQuickAdapter_dragging_support, true);
|
|
} else if (i == 1 && !isViewCreateByAdapter(viewHolder)) {
|
|
this.mAdapter.onItemSwipeStart(viewHolder);
|
|
viewHolder.itemView.setTag(R$id.BaseQuickAdapter_swiping_support, true);
|
|
}
|
|
super.onSelectedChanged(viewHolder, i);
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.ItemTouchHelper.Callback
|
|
public void onSwiped(RecyclerView.ViewHolder viewHolder, int i) {
|
|
if (isViewCreateByAdapter(viewHolder)) {
|
|
return;
|
|
}
|
|
this.mAdapter.onItemSwiped(viewHolder);
|
|
}
|
|
|
|
public void setDragMoveFlags(int i) {
|
|
this.mDragMoveFlags = i;
|
|
}
|
|
|
|
public void setMoveThreshold(float f) {
|
|
this.mMoveThreshold = f;
|
|
}
|
|
|
|
public void setSwipeMoveFlags(int i) {
|
|
this.mSwipeMoveFlags = i;
|
|
}
|
|
|
|
public void setSwipeThreshold(float f) {
|
|
this.mSwipeThreshold = f;
|
|
}
|
|
}
|