轉(zhuǎn)載請以鏈接形式標(biāo)明出處: http://www.reibang.com/p/66a4e1377ca8
本文出自:103style的博客
這是一個實現(xiàn)類似 知乎、Bilibili Android端個人中心界面 添加下拉刷新效果 == 手機(jī)QQ好友動態(tài) 界面抖仅。
效果圖
先上效果圖吧
聲明
先聲明下拉刷新修改自:http://blog.csdn.net/leehong2005/article/details/12567757.
本例是使用AppBarLayout來判斷是否可以刷新的乾忱,其他的刷新請參考這個鏈接已亥。
這個效果是最近項目需求中的翠勉,然后看了下 知乎 B站的個人中心都沒有下拉刷新姑丑,然后github上也沒找到類似的(有的話 可能是我不會找吧)…
然后就默默開始搜索下拉刷新實現(xiàn)原理埠褪,然后就找到了上面鏈接那篇文章,然后剛好可以實現(xiàn)宫仗,廢話不多說了够挂,來看怎么實現(xiàn)吧旁仿!
轉(zhuǎn)載請以鏈接形式標(biāo)明出處:
http://blog.csdn.net/lxk_1993/article/details/68484922
本文出自:lxk_1993的博客
實現(xiàn)步驟
-
把項目中的refreshlibray 庫添加到項目中藕夫,然后添加依賴孽糖,或者直接復(fù)制里面的 Java、anim毅贮、drawable–xxhdpi办悟、layout這幾個文件下的文件和values下的pull_refresh_colors和pull_refresh_strings. 如圖
-
新建一個java類,PullToRefreshBase,泛型一般用FrameLayout,然后實現(xiàn)alt+enter實現(xiàn)構(gòu)造和需要重寫的方法滩褥,如圖病蛉。
定義一個boolean類型的變量來判斷是否可以刷新(是否攔截點(diǎn)擊事件),默認(rèn)為true,添加set方法瑰煎,然后在isReadyForPullDown方法中返回這個變量铺然,可以參考下載項目中的 WithBottomContentView.java和NoBottomTabActivityXmlView.java。
-
在createRefreshableView中添加你要刷新的區(qū)域布局酒甸。
-
然后基本就完成了魄健,直接去Activity或者Fragment中開用,直接setContentView(剛剛寫的類),如果需要使用findViewById,如圖中,應(yīng)寫成recyclerview = rootview.findViewById(R.id.recycle_view).
-
然后直接appbarlayout添加滑動監(jiān)聽插勤,當(dāng)verticalOffset=0的時候沽瘦,即滑動到頂部,設(shè)置攔截點(diǎn)擊事件农尖,來實現(xiàn)刷新析恋。
-
實現(xiàn)刷新和加載監(jiān)聽,此例只實現(xiàn)了刷新盛卡。
擴(kuò)展
相信大家項目中的刷新視圖基本都是和項目icon有關(guān)的不會是這個默認(rèn)的刷新試圖助隧,所以需要修改刷新試圖的,直接修改refreshlibray中HeaderLoadingLayout及其布局pull_to_refresh_header窟扑,然后再圖中幾個方法中去改變其對應(yīng)的顯示內(nèi)同即可喇颁。
onStateChanged 狀態(tài)改變時回調(diào)
onReset 刷新完之后重置狀態(tài)
onPullToRefresh 下拉時回調(diào)
onReleaseToRefresh 下拉松開后回調(diào)
onRefreshing 刷新的時候回調(diào)
APK
如果你喜歡我的博客,請關(guān)注我嚎货。