首先看一下完成的效果图:
第一次做gif做的不好,效果体验很差,看不出demo的效果
RecyclerView现在可以说是每一个项目必不可少的控件了,删除对应RecyclerView的item也成为项目中很常见的需求。
前段时间和朋友聊天发现IOS的微信和Android的微信删除也是不一样的(可能是腾讯想追求各个系统最原汁原味的体验吧),但是我很诧异,想实现用Android仿ios的侧滑删除,我查了一些资料弄清了原理,写了一个狗信 跟大家分享一下。
核心思路: 重写onTouchEvent方法,让RecyclerView的item布局通过 scrollTo、scrollBy、Scroller方法根据手指滑动到指定位置。
一、布局文件
超出屏幕的部分为顶置和删除按钮。这样才能给布局有侧滑显示按钮的空间
二、onTouchEvent方法处理分析
1、当手指按下的时候通过findChildViewUnder(x,y)方法获取到点击对象的视图,进一步获取到顶置和删除按钮的长度,二者长度之和即为你滑动的最大距离。
2、当手指向左滑的时候,通过scorllBy方法让侧滑内容随手指滑动的距离,缓缓滑动出来。
当滑动的距离大于最大滑动距离则让item停留在最大距离 scrollTo
3、当已处于划出状态的时候,点击通过Scroller方法让他自动滑回起始位置:
4、根据滑动的距离和速度自定义你想要的状态,VelocityTracker(检测手指滑动速度)当然也可以不加,加了增加用户体验:
三、定义接口传回点击事件
四、Over
实现的思路其实很简单,理清楚逻辑就可以了。可以自己动手实现一下。
您觉得对您有帮助可以给我点个赞。
demo(欢迎Star):github.com/ChaosOctopus/DogChat