下拉刷新 AppBarLayout

本文介绍如何在Android应用中实现类似知乎、Bilibili的个人中心界面下拉刷新功能,通过使用AppBarLayout判断刷新条件,并提供实现步骤及源码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载请以链接形式标明出处: http://blog.youkuaiyun.com/lxk_1993/article/details/68484922
本文出自:lxk_1993的博客

这是一个实现类似 知乎、Bilibili Android端个人中心界面 添加下拉刷新效果 == 手机QQ好友动态 界面。

效果图

先上效果图吧

效果图

效果图

声明

先声明下拉刷新修改自:http://blog.youkuaiyun.com/leehong2005/article/details/12567757.
本例是使用AppBarLayout来判断是否可以刷新的,其他的刷新请参考这个链接。

这个效果是最近项目需求中的,然后看了下 知乎 B站的个人中心都没有下拉刷新,然后github上也没找到类似的(有的话 可能是我不会找吧)…

然后就默默开始搜索下拉刷新实现原理,然后就找到了上面链接那篇文章,然后刚好可以实现,废话不多说了,来看怎么实现吧!

转载请以链接形式标明出处:
http://blog.youkuaiyun.com/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).
    Activity中使用

  • 然后直接appbarlayout添加滑动监听,当verticalOffset=0的时候,即滑动到顶部,设置拦截点击事件,来实现刷新。
    添加滑动监听

  • 实现刷新和加载监听,此例只实现了刷新。
    刷新和加载监听

扩展

相信大家项目中的刷新视图基本都是和项目icon有关的不会是这个默认的刷新试图,所以需要修改刷新试图的,直接修改refreshlibray中HeaderLoadingLayout及其布局pull_to_refresh_header,然后再图中几个方法中去改变其对应的显示内同即可。

  • onStateChanged 状态改变时回调
  • onReset 刷新完之后重置状态
  • onPullToRefresh 下拉时回调
  • onReleaseToRefresh 下拉松开后回调
  • onRefreshing 刷新的时候回调

下拉刷新状态的回调方法

APK

如果你喜欢我的博客,请关注我。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值