RecyclerView 懸浮吸頂效果實現,支持數據綁定及Touch事件

諸如聯繫人列表、分類頁商品類表等分組場景,都可能需要懸浮吸頂的效果。Android 官方並未提供原生的組件來實現這個功能,因此需要我們自定義實現。

網上看到的基本實現思路都是通過 ItemDecoration ,在滑動過程中去根據當前滑動位置,繪製吸頂的視圖。

如果只是需要簡單的繪製,確實通過這個方式要簡單的多。但是通過這種方式無法支持 Touch 事件。感興趣的可以參考一下這個:https://gist.github.com/saber-solooki/edeb57be63d2a60ef551676067c66c71 (可能需要梯子才能訪問)

StickyHeader View 實現思路

1、Adapter 的數據裏面要能夠區分對應 position 的數據是 Header 還是 Item
2、通過 HeaderViewHolder 創建一個額外的懸浮HeaderView,當第一個分組的 Header 剛剛好貼邊的時候,是無需展示這個懸浮HeaderView的。當第一個分組的 Header 往上滑了之後,那麼就開始展示這個懸浮HeaderView。當第二個分組的 Header快要滑動到頂部的時候,懸浮HeaderView 要跟隨逐漸往上退出。
3、通過 HeaderViewHolder 把數據綁定到 懸浮HeaderView 上面
4、處理點擊事件或狀態,應通過更改每個 Header 對應的 Model 的數據,在 onBindViewHolder 進行狀態綁定。比如點擊了懸浮HeaderView,需要做選中,那麼,懸浮HeaderView 對應的真正的再列表中的View 也應該同步更新選選中狀態。
5、爲了使 懸浮HeaderView 更加明顯,可以通過 ViewPropertyAnimator 爲其增加Z軸的陰影。

具體代碼地址https://github.com/smuyyh/StickyHeaderRecyclerView

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章