博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
仿微信未读RecyclerView平滑滚动定位效果
阅读量:5066 次
发布时间:2019-06-12

本文共 651 字,大约阅读时间需要 2 分钟。

效果图有红点的地方表示有未读消息,依次双击首页图标定位,然后定位到某个未读在手动下滑一点距离在次点击定位效果

用过 RecyclerView 的人都知道,自带有几个滚动到item下标的方法,但是不靠谱,靠谱的又没有平滑效果,所以还是得自己写,主要是模仿了微信的一些定位逻辑

首先,要滚动到指定的坐标出,可以借用recyclerview自带的几个方法,但是无论哪个方法首先得需要指定position,所以第一件事情就是先把position找准确了

 

上面代码就是查询出可见条目开始最近的一条未读item的position,接下来就是直接平滑滚动定位到未读的item条目了,这里就需要用到两个方法了, smoothScrollToPosition 这个方法是有平滑效果的,但是只能从下往上的时候才是我们想要的效果,所以我们还需要用另外的方法用于从上往下平滑滚动

这里用 smoothScrollBy 来滚动,smoothScrollBy方法需要一个top坐标,而不是position,所以这个需要先获取到定位item的top坐标,这里recyclerview也都有自带的方法,所以最后的方法如下

到这里就可以达到上面效果图的效果了,每次双击都会找到你显示位置的下一个未读item,然后定位平滑过去,上滑一点在次双击回到最近的未读item,到达最后一条item自动回滚到开始第一条未读item

 GitHub:

转载于:https://www.cnblogs.com/LiuZhen/p/9884948.html

你可能感兴趣的文章
Web服务器超时处理
查看>>
keil C 51 strlen库函数使用
查看>>
JS取得绝对路径
查看>>
排球积分程序(三)——模型类的设计
查看>>
编程原则 流水账
查看>>
tomcat URL乱码问题
查看>>
wpf首次项目开发技术总结wpf页面
查看>>
python numpy sum函数用法
查看>>
Linux中的SELinux详解--16
查看>>
php变量什么情况下加大括号{}
查看>>
less入门
查看>>
如何实现手游app瘦身?
查看>>
linux程序设计---序
查看>>
【字符串入门专题1】hdu3613 【一个悲伤的exkmp】
查看>>
C# Linq获取两个List或数组的差集交集
查看>>
21.Longest Palindromic Substring(最长回文子串)
查看>>
HDU 4635 Strongly connected
查看>>
[WPF]WPF开发方法论
查看>>
【转】先说IEnumerable,我们每天用的foreach你真的懂它吗?
查看>>
springboot web 服务器选择
查看>>