自定义会漂移的RecyclerView(侧滑)

首先看一下完成的效果图:

第一次做gif做的不好,效果体验很差,看不出demo的效果


效果图

RecyclerView现在可以说是每一个项目必不可少的控件了,删除对应RecyclerView的item也成为项目中很常见的需求。

前段时间和朋友聊天发现IOS的微信和Android的微信删除也是不一样的(可能是腾讯想追求各个系统最原汁原味的体验吧),但是我很诧异,想实现用Android仿ios的侧滑删除,我查了一些资料弄清了原理,写了一个狗信 跟大家分享一下。

核心思路:  重写onTouchEvent方法,让RecyclerView的item布局通过 scrollTo、scrollBy、Scroller方法根据手指滑动到指定位置。

一、布局文件

超出屏幕的部分为顶置和删除按钮。这样才能给布局有侧滑显示按钮的空间


自定义会漂移的RecyclerView(侧滑)_第1张图片
item布局

二、onTouchEvent方法处理分析

      1、当手指按下的时候通过findChildViewUnder(x,y)方法获取到点击对象的视图,进一步获取到顶置和删除按钮的长度,二者长度之和即为你滑动的最大距离

     2、当手指向左滑的时候,通过scorllBy方法让侧滑内容随手指滑动的距离,缓缓滑动出来。

当滑动的距离大于最大滑动距离则让item停留在最大距离 scrollTo


自定义会漂移的RecyclerView(侧滑)_第2张图片
移动中处理



     3、当已处于划出状态的时候,点击通过Scroller方法让他自动滑回起始位置:


滑回

  4、根据滑动的距离速度自定义你想要的状态,VelocityTracker(检测手指滑动速度)当然也可以不加,加了增加用户体验:


自定义会漂移的RecyclerView(侧滑)_第3张图片
ACTION_UP

三、定义接口传回点击事件


自定义会漂移的RecyclerView(侧滑)_第4张图片
接口回调

四、Over

实现的思路其实很简单,理清楚逻辑就可以了。可以自己动手实现一下。

您觉得对您有帮助可以给我点个赞。

demo(欢迎Star):github.com/ChaosOctopus/DogChat

你可能感兴趣的:(自定义会漂移的RecyclerView(侧滑))