android仿支付宝我的应用编辑界面,类似支付宝应用管理界面——RecycleView+ItemTouchHelper实现拖拽滑动...

本文介绍了如何使用RecycleView和ItemTouchHelper在Android中实现类似支付宝应用管理界面的拖拽滑动效果。通过实现ItemTouchHelper.Callback接口,设置拖动和滑动标志,以及监听拖动和滑动事件,轻松添加拖放排序和滑动删除功能。同时,文章还展示了具体的布局文件和点击事件处理,以及自定义ItemTouchHelper.Callback类来实现拖拽效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

要实现RecycleView中的拖拽滑动,在以往的经验中经常要依赖GestureDetectors、onInterceptTouchEvent等来实现,然而在RecyclerView上添加拖动特性有一个非常简单的方法它就是:ItemTouchHelper。

一、效果图

以下就是通过RecycleView+ItemTouchHelper实现拖拽滑动的效果图,看起来有没有很炫酷。其实实现起来很简单,我们接下来就开始介绍。

02a9b697fdc0

二、ItemTouchHelper的介绍

ItemTouchHelper是一个强大的工具,它处理好了关于在RecyclerView上添加拖动排序与滑动删除的所有事情。它是RecyclerView.ItemDecoration的子类,也就是说它可以轻易的添加到几乎所有的LayoutManager和Adapter中。它还可以和现有的item动画一起工作,提供受类型限制的拖放动画等等。

1.添加依赖

compile 'com.android.support:recyclerview-v7:25.1.0'

因为要使用RecycleView,同时ItemTouchHelper也是RecycleView中的类。

2.自定义ItemTouchHelper.Callback类

为了使用ItemTouchHelper,你需要实现ItemTouchHelper.Callback接口,通过这个接口,你可以监听“move”和 “swipe”事件,在这里你也可以控制View的选择状态和重写默认动画。

必须实现主要的回调方法:

getMovementFlags(RecyclerView, ViewHolder)

onMove(RecyclerView, ViewHolder, ViewHolder)

onSwiped(ViewHolder, int)

具体解释这三个方法:

public int getMovementFlags(RecyclerView recyclerView,

RecyclerView.ViewHolder viewHolder) {

int dragFlags = ItemTouchHelper.UP| ItemTouchHelper.DOWN;

int swipeFlags = ItemTouchHelper.START| ItemTouchHelper.END;

return makeMovementFlags(dragFlags, swipeFlags);

}

ItemTouchHelper允许你判断事件方向。但你必须覆写getMovementFlags()方法去指定支持哪些方向。使用ItemTouchHelper.makeMovementFlags(int, int)创建代表方向的Flag。这里我们同时支持drag和swipe。实现这个方法,ItemTouchHelper可以只能drag而不能swipe(反之亦然),总之根据自己的需求指定。

onMove(RecyclerView, ViewHolder, ViewHolder)

onSwiped(ViewHolder, int)

当Item移动或者滑动时,会回调这两个方法,然后可以在这两个方法内部设置回调通知更新适配器或者页面显示的数据。

我们还将使用2个帮助方法:

@Override

public boolean isLongPressDragEnabled() {

return true;

}

实现isLongPressDragEnabled()方法返回true去支持长按RecyclerView的item时的drag事件。或者,也可以调用ItemTouchHelper.startDrag(RecyclerView.ViewHolder) 方法来开始一个拖动。

@Override

public boolean isItemViewSwipeEnabled() {

return true;<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值