仿微信未讀RecyclerView平滑滾動定位效果

效果圖有紅點的地方表示有未讀消息,依次雙擊首頁圖標定位,而後定位到某個未讀在手動下滑一點距離在次點擊定位效果git

用過 RecyclerView 的人都知道,自帶有幾個滾動到item下標的方法,可是不靠譜,靠譜的又沒有平滑效果,因此仍是得本身寫,主要是模仿了微信的一些定位邏輯github

首先,要滾動到指定的座標出,能夠借用recyclerview自帶的幾個方法,可是不管哪一個方法首先得須要指定position,因此第一件事情就是先把position找準確了微信

 

上面代碼就是查詢出可見條目開始最近的一條未讀item的position,接下來就是直接平滑滾動定位到未讀的item條目了,這裏就須要用到兩個方法了, smoothScrollToPosition 這個方法是有平滑效果的,可是隻能從下往上的時候纔是咱們想要的效果,因此咱們還須要用另外的方法用於從上往下平滑滾動spa

這裏用 smoothScrollBy 來滾動,smoothScrollBy方法須要一個top座標,而不是position,因此這個須要先獲取到定位item的top座標,這裏recyclerview也都有自帶的方法,因此最後的方法以下blog

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

 GitHub:https://github.com/1024477951/FragmentAppit

相關文章
相關標籤/搜索