Android教你打造獨(dú)一無(wú)二的刷新加載框架

作者簡(jiǎn)介? 原創(chuàng)微信公眾號(hào)郭霖 WeChat ID: guolin_blog

上了三天班均践,又要放假了堪置,提前祝大家周末愉快!

本篇是馬云飛的第四篇投稿俩莽,分享了自己實(shí)現(xiàn)的刷新加載框架川梅,一個(gè)常見的功能疯兼,希望能夠幫助大家理清其中的相關(guān)知識(shí)點(diǎn)。

馬云飛的博客地址:

http://blog.csdn.net/sw950729

正文

其實(shí)早在去年七月贫途,群里小伙伴就有讓我共享這個(gè)镇防。但我當(dāng)時(shí)絕的技術(shù)不純熟。代碼有bug什么的潮饱。沒(méi)有寫出來(lái)±囱酰現(xiàn)在感覺(jué)整理的差不多了。就寫出來(lái)讓大家看看香拉,有問(wèn)題一起討論解決啦扬。

說(shuō)到刷新加載,我們第一個(gè)想到啥凫碌,對(duì)了就是 swiperefreshlayout扑毡,還有什么 SuperSwiperefreshlayout,XRecyclerView 等等盛险。反正老多了瞄摊,我還是之前那句話,不管用什么苦掘,我們需要知道他的原理换帜。

打造框架開始

對(duì)于刷新加載的實(shí)現(xiàn),你們第一個(gè)想到的是什么鹤啡?是用 swiperefresh 然后在 recyclerview 底部加一個(gè)不同type惯驼?還是用事件攔截呢?那必須是事件攔截啊递瑰,雖然現(xiàn)在 swiperefreshlayout 很火祟牲,基本很多app都能看到他。但是遇到那種坑比公司說(shuō)刷新要用自己公司logo你也沒(méi)轍抖部,對(duì)吧说贝?好了,感覺(jué)得罪了好多公司慎颗,不管他乡恕,我們繼續(xù)换淆。

如果有小伙伴長(zhǎng)期看我博客,應(yīng)該知道我前面有一篇是寫過(guò)事件攔截的几颜。沒(méi)錯(cuò),就是

從源碼角度分析嵌套滑動(dòng)機(jī)制NestedScrolling

http://blog.csdn.net/sw950729/article/details/52129349

對(duì)于 nestedscrolling?不了解的同學(xué)可以看完在繼續(xù)下文讯屈。我們先看下我們的效果圖:


老鐵蛋哭,沒(méi)毛病。下面我介紹如何實(shí)現(xiàn)的涮母。

下拉刷新

首先我們給出如下幾個(gè)參數(shù)谆趾,后面要用:

既然是刷新,我們的滾動(dòng)肯定是在 父view 之前的叛本。所以我們需要在 onNestedPreScroll 這個(gè)方法里面寫上我們所需要改動(dòng)的x沪蓬,y值。

我們需要用 父view 去攔截它来候。我們需要判斷 dy 的值是否大于0跷叉,因?yàn)榇笥?是刷新操作,小于0是加載操作营搅。然后我們需要判斷 recyclerview 是否是縱向的而不是橫向的云挟。

上拉加載

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

最后我們需要在 子view 滑動(dòng)結(jié)束后园欣,實(shí)行如下操作:

其實(shí)最主要的兩個(gè)方法已經(jīng)解決了,其他到?jīng)]什么了休蟹,這邊沸枯,我把 nestedscrolling 的8個(gè)接口的功能和自定義 recyclerview 放出來(lái)。已便大家參考赂弓。希望大家都能實(shí)現(xiàn)自己的刷新加載绑榴。告別 swiperefreshlayout。

添加header和footer

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

幾個(gè)接口的實(shí)現(xiàn):

自定義recyclerview

既然是自己寫的刷新加載框架彭沼,總不能還有自定義 layout 中在放個(gè) recyclerview。多麻煩备埃,自定義一個(gè)姓惑,直接放在里面,然后分別放個(gè) header 和 footer按脚,就沒(méi)必要每次有頁(yè)面用到刷新都要寫一個(gè)布局于毙。3個(gè)布局解決整個(gè)項(xiàng)目的刷新和加載。話不多說(shuō)辅搬,代碼如下:

這樣我們變實(shí)現(xiàn)了自己的刷新加載框架唯沮,代碼我已上傳到github:

https://github.com/sw950729/SWPullRecyclerLayout

至于使用方法如下:

jcenter:

compile'com.angel:SWPullRecyclerLayout:1.0.0'

maven:

依舊是那2句話脖旱。不管用什么我們需要知道原理。還有就是有什么不懂的提出來(lái)介蛉∶惹欤可以一起討論。


文章原創(chuàng)作者GuoLin 書籍推薦

郭林大神原創(chuàng)android 書籍:《第一行代碼 android》

淘寶鏈接:

https://s.click.taobao.com/t?e=m%3D2%26s%3DgKUfuKdAZKocQipKwQzePOeEDrYVVa64K7Vc7tFgwiHjf2vlNIV67p2n%2BQBNMyE6Rku8%2Bpj6eJall3bs%2B3NRhNHnsKI%2BqxhyM0iVZhTFBom4YIorMPnmg8G0g2OJi%2FzmXHfenomYtn5EW9vzeG8LzfPUwktUBEmkxg5p7bh%2BFbQ%3D&pvid=10_106.6.161.154_3367_1490163222155

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末币旧,一起剝皮案震驚了整個(gè)濱河市践险,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌吹菱,老刑警劉巖巍虫,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異鳍刷,居然都是意外死亡占遥,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門输瓜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)瓦胎,“玉大人,你說(shuō)我怎么就攤上這事尤揣×菽螅” “怎么了?”我有些...
    開封第一講書人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵芹缔,是天一觀的道長(zhǎng)坯癣。 經(jīng)常有香客問(wèn)我,道長(zhǎng)最欠,這世上最難降的妖魔是什么示罗? 我笑而不...
    開封第一講書人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮芝硬,結(jié)果婚禮上蚜点,老公的妹妹穿的比我還像新娘。我一直安慰自己拌阴,他們只是感情好绍绘,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著迟赃,像睡著了一般陪拘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上纤壁,一...
    開封第一講書人閱讀 51,688評(píng)論 1 305
  • 那天左刽,我揣著相機(jī)與錄音,去河邊找鬼酌媒。 笑死欠痴,一個(gè)胖子當(dāng)著我的面吹牛迄靠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播喇辽,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼掌挚,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了菩咨?” 一聲冷哼從身側(cè)響起吠式,我...
    開封第一講書人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎旦委,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體雏亚,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡缨硝,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了罢低。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片查辩。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖网持,靈堂內(nèi)的尸體忽然破棺而出宜岛,到底是詐尸還是另有隱情,我是刑警寧澤功舀,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布萍倡,位于F島的核電站,受9級(jí)特大地震影響辟汰,放射性物質(zhì)發(fā)生泄漏列敲。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一帖汞、第九天 我趴在偏房一處隱蔽的房頂上張望戴而。 院中可真熱鬧,春花似錦翩蘸、人聲如沸所意。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)扶踊。三九已至,卻和暖如春郎任,著一層夾襖步出監(jiān)牢的瞬間姻檀,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工涝滴, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留绣版,地道東北人胶台。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像杂抽,于是被迫代替她去往敵國(guó)和親诈唬。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,167評(píng)論 25 707
  • 內(nèi)容抽屜菜單ListViewWebViewSwitchButton按鈕點(diǎn)贊按鈕進(jìn)度條TabLayout圖標(biāo)下拉刷新...
    皇小弟閱讀 46,766評(píng)論 22 665
  • 艾雄恒缩麸,祖籍湖北铸磅,早年受湖北省書協(xié)主席徐本一先生教導(dǎo),先以隸書入手杭朱,再以顏體入筋阅仔,后工歐楷,兼二王弧械,86年生八酒,章草...
    燕子掌柜閱讀 3,113評(píng)論 1 0
  • 煙味難聞的廁所,滴滴答答的水聲 以為會(huì)被秀的情人節(jié) 還有搞不懂的人際關(guān)系 真是不美好的日子
    厭世時(shí)令閱讀 189評(píng)論 0 0