下拉刷新 AppBarLayout
2023-02-18 16:34:08 时间
转载请以链接形式标明出处: http://blog.csdn.net/lxk_1993/article/details/68484922 本文出自:lxk_1993的博客
这是一个实现类似 知乎、Bilibili Android端个人中心界面 添加下拉刷新效果 == 手机QQ好友动态 界面。
效果图
先上效果图吧
声明
先声明下拉刷新修改自:http://blog.csdn.net/leehong2005/article/details/12567757. 本例是使用AppBarLayout来判断是否可以刷新的,其他的刷新请参考这个链接。
这个效果是最近项目需求中的,然后看了下 知乎 B站的个人中心都没有下拉刷新,然后github上也没找到类似的(有的话 可能是我不会找吧)…
然后就默默开始搜索下拉刷新实现原理,然后就找到了上面链接那篇文章,然后刚好可以实现,废话不多说了,来看怎么实现吧!
转载请以链接形式标明出处: http://blog.csdn.net/lxk_1993/article/details/68484922 本文出自:lxk_1993的博客
实现步骤
- 去这里 github 或 csdn下载源码.
- 把项目中的refreshlibray 库添加到项目中,或者直接复制里面的 java、anim、drawable–xxhdpi、layout这几个文件下的文件和values下的pull_refresh_colors和pull_refresh_strings. 如图
- 新建一个java类,PullToRefreshBase,泛型一般用FrameLayout,然后实现alt+enter实现构造和需要重写的方法,如图。
- 定义一个boolean类型的变量来判断是否可以刷新(是否拦截点击事件),默认为true,添加set方法,然后在isReadyForPullDown方法中返回这个变量,可以参考下载项目中的 WithBottomContentView.java和NoBottomTabActivityXmlView.java。
- 在createRefreshableView中添加你要刷新的区域布局。
- 然后基本就完成了,直接去Activity或者Fragment中开用,直接setContentView(刚刚写的类),如果需要使用findViewById,如图中,应写成recyclerview = rootview.findViewById(R.id.recycle_view).
- 然后直接appbarlayout添加滑动监听,当verticalOffset=0的时候,即滑动到顶部,设置拦截点击事件,来实现刷新。
- 实现刷新和加载监听,此例只实现了刷新。
扩展
相信大家项目中的刷新视图基本都是和项目icon有关的不会是这个默认的刷新试图,所以需要修改刷新试图的,直接修改refreshlibray中HeaderLoadingLayout及其布局pull_to_refresh_header,然后再图中几个方法中去改变其对应的显示内同即可。
- onStateChanged 状态改变时回调
- onReset 刷新完之后重置状态
- onPullToRefresh 下拉时回调
- onReleaseToRefresh 下拉松开后回调
- onRefreshing 刷新的时候回调
APK
如果你喜欢我的博客,请关注我。
相关文章
- 牛客刷题——剑指offer(第6期)
- 理解浏览器重绘和回流
- JAVA IO——文件字符说明
- 如何在 Canvas 上实现图形拾取?
- 蓝桥杯 ——省赛题(java 组)
- 蓝桥杯——java(b组)省赛
- Canvas 性能优化:脏矩形渲染
- 如何排查网页在哪里发生了内存泄漏?
- 理解 React 的调和器 Reconciler
- 蓝桥杯最后的冲刺篇(JAVA)
- 理解 React 的 commit 阶段
- 说说 React 中 fiber、DOM、ReactElement、实例对象之间的引用关系
- ECMAScript 6 简介
- 兄弟组件传值
- 从源码理解 React Hook 是如何工作的
- 父组件调用子组件方法并传入值
- 子组件派发事件和值给父组件
- 快速检索碰撞图形:四叉树碰撞检测
- Vue2剥丝抽茧-模版编译之生成AST
- 父组件给子组件传值