我基本都是写一些小而美的实用东西(我也写不了太高大上的东西--).今天这个一定可以让头疼这个功能的猿们再也不用害怕。从前在Listview的时代像拖动等改变item的效果都需要做各种回调及手势处理等。大部分人都选择去使用第三方库。而RecyclerView出现后很多动画手势效果都变的简单了许多。谷歌把很多常用的都进行的封闭和接口回调(扩展)。ok今天我们就开始进入正题。先上效果图
Step1
首先我们需要继承
ItemTouchHelper.Callback
在里面处理一些事件处理及设置
- 这里复写这两个方法可以对事件做“开关”
- 这里的设置就看图吧。不用解释了
- 这里主要对拖动时的一些事件做处理 比如有两个viewType时不做任何效果处理及adapter数据处理等
- 这里可以在对滑动、拖动及停顿时做一些绘制 这里我对侧滑时改变alpha
Step2
我们需要两个回调来通知事件处理
Step3
在adapter中实现
onMoveAndSwipedListener
Step4
将我们自定义的Helper和RecyclerView进行关联即完成了简单的拖动及侧滑
在效果图中 我们可以看到。点击右边的图标是也是可以拖动的。这是可以通过
ItemTouchHelper.startDrag(ViewHolder)
来
手动开启拖动。当然也有startSwipe(viewHolder)
方法
源码:https://github.com/EasonHolmes/RecyclerView_Swipe_Move