
效果圖有紅點的地方表示有未讀消息,依次雙擊首頁圖標定位,然后定位到某個未讀在手動下滑一點距離在次點擊定位效果
用過 RecyclerView 的人都知道,自帶有幾個滾動到item下標的方法,但是不靠譜,靠譜的又沒有平滑效果,所以還是得自己寫,主要是模仿了微信的一些定位邏輯
首先,要滾動到指定的坐標出,可以借用recyclerview自帶的幾個方法,但是無論哪個方法首先得需要指定position,所以第一件事情就是先把position找准確了

上面代碼就是查詢出可見條目開始最近的一條未讀item的position,接下來就是直接平滑滾動定位到未讀的item條目了,這里就需要用到兩個方法了, smoothScrollToPosition 這個方法是有平滑效果的,但是只能從下往上的時候才是我們想要的效果,所以我們還需要用另外的方法用於從上往下平滑滾動
這里用 smoothScrollBy 來滾動,smoothScrollBy方法需要一個top坐標,而不是position,所以這個需要先獲取到定位item的top坐標,這里recyclerview也都有自帶的方法,所以最后的方法如下

到這里就可以達到上面效果圖的效果了,每次雙擊都會找到你顯示位置的下一個未讀item,然后定位平滑過去,上滑一點在次雙擊回到最近的未讀item,到達最后一條item自動回滾到開始第一條未讀item
