1. 程式人生 > >10年Android老司機教你打造獨一無二的刷新加載框架

10年Android老司機教你打造獨一無二的刷新加載框架

代碼 out ID 添加 一起 compile 定義 說了 AD

首先我們給出如下幾個參數,後面要用:

10年Android老司機教你打造獨一無二的刷新加載框架
既然是刷新,我們的滾動肯定是在 父view 之前的。所以我們需要在 onNestedPreScroll 這個方法裏面寫上我們所需要改動的x,y值。

我們需要用 父view 去攔截它。我們需要判斷 dy 的值是否大於0,因為大於0是刷新操作,小於0是加載操作。然後我們需要判斷 recyclerview 是否是縱向的而不是橫向的。

10年Android老司機教你打造獨一無二的刷新加載框架
上拉加載

上面我也說了 onNestedPreScroll 這個方法中判斷 dy<0 才是加載操作。所以綜上所述,代碼變成了這樣:

10年Android老司機教你打造獨一無二的刷新加載框架
最後我們需要在 子view 滑動結束後,實行如下操作:

10年Android老司機教你打造獨一無二的刷新加載框架
其實最主要的兩個方法已經解決了,其他到沒什麽了,這邊,我把 nestedscrolling 的8個接口的功能和自定義 recyclerview 放出來。已便大家參考。希望大家都能實現自己的刷新加載。告別 swiperefreshlayout。

添加header和footer

這裏我們參考 listview 自帶的 addheaderview 和 addfooterview。代碼如下:

10年Android老司機教你打造獨一無二的刷新加載框架

幾個接口的實現:

10年Android老司機教你打造獨一無二的刷新加載框架
10年Android老司機教你打造獨一無二的刷新加載框架
自定義recyclerview

既然是自己寫的刷新加載框架,總不能還有自定義 layout 中在放個 recyclerview。多麻煩,自定義一個,直接放在裏面,然後分別放個 header 和 footer,就沒必要每次有頁面用到刷新都要寫一個布局。3個布局解決整個項目的刷新和加載。話不多說,代碼如下:

10年Android老司機教你打造獨一無二的刷新加載框架
10年Android老司機教你打造獨一無二的刷新加載框架
這樣我們變實現了自己的刷新加載框架,代碼我已上傳到github:

https://github.com/sw950729/SWPullRecyclerLayout
至於使用方法如下:

jcenter:

compile ‘com.angel:SWPullRecyclerLayout:1.0.0‘
maven:

10年Android老司機教你打造獨一無二的刷新加載框架
依舊是那2句話。不管用什麽我們需要知道原理。還有就是有什麽不懂的提出來。可以一起討論。

更多

10年Android老司機教你打造獨一無二的刷新加載框架

10年Android老司機教你打造獨一無二的刷新加載框架