效果图有红点的地方表示有未读消息,依次双击首页图标定位,而后定位到某个未读在手动下滑一点距离在次点击定位效果git
用过 RecyclerView 的人都知道,自带有几个滚动到item下标的方法,可是不靠谱,靠谱的又没有平滑效果,因此仍是得本身写,主要是模仿了微信的一些定位逻辑github
首先,要滚动到指定的坐标出,能够借用recyclerview自带的几个方法,可是不管哪一个方法首先得须要指定position,因此第一件事情就是先把position找准确了微信
上面代码就是查询出可见条目开始最近的一条未读item的position,接下来就是直接平滑滚动定位到未读的item条目了,这里就须要用到两个方法了, smoothScrollToPosition 这个方法是有平滑效果的,可是只能从下往上的时候才是咱们想要的效果,因此咱们还须要用另外的方法用于从上往下平滑滚动spa
这里用 smoothScrollBy 来滚动,smoothScrollBy方法须要一个top坐标,而不是position,因此这个须要先获取到定位item的top坐标,这里recyclerview也都有自带的方法,因此最后的方法以下blog
到这里就能够达到上面效果图的效果了,每次双击都会找到你显示位置的下一个未读item,而后定位平滑过去,上滑一点在次双击回到最近的未读item,到达最后一条item自动回滚到开始第一条未读itemget