android 下拉头部放大 下拉刷新
1.引入
implementation 'com.gavin.view.flexible:library:1.0.2'
2.布局
<com.gavin.view.flexible.FlexibleLayout ...> <ScrollView ...> <LinearLayout ... android:orientation="vertical"> <ImageView android:id="@+id/iv_header" .../> <TextView ... /> </LinearLayout> </ScrollView> </com.gavin.view.flexible.FlexibleLayout>
3.Activity代码
private ImageView mHeader; private ScrollView mScrollView; private FlexibleLayout mFlexibleLayout; ... mFlexibleLayout.setHeader(mHeader) .setReadyListener(new OnReadyPullListener() { @Override public boolean isReady() { //下拉放大的条件 return mScrollView.getScrollY() == 0; } });
4.如何需要刷新或者处理其他
mFlexibleLayout.setHeader(mHeader) .setReadyListener(new OnReadyPullListener() { @Override public boolean isReady() { return mScrollView.getScrollY() == 0; } }) .setRefreshable(true) .setDefaultRefreshView(new OnRefreshListener() { @Override public void onRefreshing() { //刷新操作 ... //刷新完成后需要调用onRefreshComplete()通知FlexibleLayout mFlexibleLayout.onRefreshComplete(); } });
5.方法/属性
配置
方法 | 功能 | 默认 |
---|---|---|
setEnable(boolean isEnable) | 允许下拉放大 | true |
setHeader(View header) | 设置Header | null |
setMaxPullHeight(int height) | Header最大下拉高度 | header 高度 + 1/3屏幕宽度 |
setRefreshable(boolean isEnable) | 是否允许下拉刷新 | false |
setMaxRefreshPullHeight(int height) | 刷新View最大下拉高度 | 1/3屏幕宽度 |
setRefreshSize(int size) | 刷新View的尺寸(正方形) | 1/15屏幕宽度 |
isRefreshing() | 是否正在刷新 |
监听
方法 | 功能 |
---|---|
setReadyListener(OnReadyPullListener listener) | 设置准备监听 |
setOnPullListener(OnPullListener onPullListener) | 下拉监听 |
setRefreshView(View refreshView, OnRefreshListener listener) | 设置下拉刷新View 以及监听 |
setDefaultRefreshView(OnRefreshListener listener) | 使用默认的下拉刷新View |
源码下载地址
链接:https://pan.baidu.com/s/1ZnisWWr0t2gYt0peXP0DzA
提取码:t8pf
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通