gpt4 book ai didi

java - Android ItemTouchHelper 部分滑动

转载 作者:行者123 更新时间:2023-12-01 12:39:01 29 4
gpt4 key购买 nike

当我们从末端滑动时,我可以显示红色背景和删除图标。我正在尝试实现部分滑动功能,在部分滑动时,滑动在删除图标之前停止。我尝试关注这些 solutions .但是,它对我不起作用。请指出我正确的方向。

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 表示完全滑动)

关于java - Android ItemTouchHelper 部分滑动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54177366/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com