分享一个好用的HarmonyOS鸿蒙Next下拉刷新上拉加载组件
分享一个好用的HarmonyOS鸿蒙Next下拉刷新上拉加载组件
有没有公司招鸿蒙开发的啊,求职ing
ElfRefresh
简介
一款简单,高效的上拉下拉刷新组件,支持各种任意组件刷新。基本没有侵入性
- 支持List、Scroll、Swipe等滑动组件刷新加载;
- 支持自动刷新功能;
- 支持暂无更多数据;
- 支持自定义Header和Footer;
- 支持Web的刷新(目前体验不太好);
- 支持二楼功能;
下载安装
ohpm install @duke/elf-refresh
OpenHarmony ohpm
环境配置等更多内容,请参考如何安装 OpenHarmony ohpm 包
使用说明
简单示例
import { ElfRefreshComponent } from '@duke/elf-refresh';
import { TitleBar } from '../components/TitleBar';
@Component
struct ListPage {
@State data: string[] = [];
aboutToAppear(): void {
for (let i = 0; i < 100; i++) {
this.data.push('item' + i);
}
}
@Builder builderList() {
List() {
ForEach(this.data, (item: string) => {
ListItem() { Text("测试数据" + item)
.width("95%")
.height(50)
.margin(10)
.textAlign(TextAlign.Center)
.border({ width: 1, color: Color.Pink })
}
})
}
.height('100%')
.width('100%')
//下面代码建议添加,添加了会让刷新更流畅
.edgeEffect(EdgeEffect.None)
}
build() {
Column() {
TitleBar({ title: '普通List', })
ElfRefreshComponent({
content: () => { this.builderList() },
onRefresh: async () => {
console.log('onRefresh');
return true; },
onLoadMore: async () => {
console.log('onLoadMore');
return true; }
}).layoutWeight(1)
}.height('100%')
.width('100%')
}
}
接口说明
ElfRefreshComponent
方法名 | 入参 | 接口描述 |
---|---|---|
content | builderFunction | 内容区 |
custom | ElfCustomHeaderFooter | 自定义HeaderFooter 插槽 |
refreshConfigurator | ElfRefreshConfigurator | 组件配置 |
controller | ElfRefreshController | 自动刷新控制和无更多数据控制 |
childOffsetInput | number | 对于非滑动组件又有滑动手势的组件提供解决滑动冲突的方案(如Web组件) 大于0则刷新不响应 注意该属性仅对刷新生效 |
isSmartFind | boolean | 智能寻找刷新控件 默认开启,负责嵌套建议关闭,手动指定刷新组件 |
interceptNestScroll | boolean | 拦截嵌套滑动刷新 默认关闭 |
targetRefreshId | string | 内容区存在嵌套滑动的情况,提供主内容id,解决滑动冲突的情况 |
onRefresh | () => Promise | 返回值为true则刷新成功,false则刷新失败 |
onLoadMore | () => Promise | 返回值为true则加载成功,false则加载失败 |
ElfGlobalConfig
方法名 | 入参 | 说明 |
---|---|---|
initGlobalConfig | ElfCustomHeaderFooter,ElfRefreshConfigurator | 全局配置,配置全局刷新组件的默认配置,默认配置会覆盖组件的配置 |
getDefaultCustom | 获取全局Header和Footer组件 | |
getDefaultConfigurator | 获取全局刷新组件的默认配置 |
ElfRefreshConfigurator
属性 | 功能描述描述 |
---|---|
hasRefresh | 是否具有下拉刷新功能 |
hasLoadMore | 是否具有上拉加载功能 |
maxTranslate | 下拉刷新距离 |
closeTwoOffset | 关闭二楼高度,支持百分比和calc函数,以二楼高度为基准 |
sensitivity | 下拉上拉灵敏度 |
animDuration | 滑动结束后,回弹动画执行时间 |
refreshHeight | 下拉组件高度 |
loadHeight | 上拉组件高度 |
twoLevelHeight | 二楼高度支持百分比和calc函数 |
refreshAnimDuration | 自动下拉动画执行一次的时间 |
refreshCompleteTextHoldTime | 下拉刷新完毕后, 刷新成功文本停留的时间 |
headerStyle | 头部样式 |
footerStyle | 底部样式 |
copyWith | 拷贝配置并更新配置 |
自定义HeaderFooter
ElfRefreshHeader
属性/回调 | 类型 | 说明 |
---|---|---|
maxTranslate | number | 最大平移距离(控制下拉最大位移) |
height | number | 容器高度基准值 |
state | RefreshState | 当前刷新状态(关联枚举类型 RefreshState) |
percent | number | 下拉进度百分比(计算值:offset/height) |
offset | number | 实时下拉位移量 |
onMoving | () => void | 手指持续拖动时触发 |
onReleased | () => void | 手指释放屏幕时触发 |
onStart | () => void | 刷新动画开始时触发 |
onFinish | (isSuccess: boolean) => void | 刷新完成时触发(带成功状态) |
ElfRefreshFooter
属性/回调 | 类型 | 说明 |
---|---|---|
maxTranslate | number | 最大平移距离(控制下拉最大位移) |
height | number | 容器高度基准值 |
state | RefreshState | 当前刷新状态(关联枚举类型 RefreshState) |
percent | number | 下拉进度百分比(计算值:offset/height) |
offset | number | 实时下拉位移量 |
hasMore | boolean | 是否可以继续加载 |
onMoving | () => void | 手指持续拖动时触发 |
onReleased | () => void | 手指释放屏幕时触发 |
onStart | () => void | 刷新动画开始时触发 |
onFinish | (isSuccess: boolean) => void | 刷新完成时触发(带成功状态) |
二楼使用
查看下面Demo
约束与限制
在下述版本验证通过:
DevEco Studio: 5.0.5.315, SDK: HarmonyOS 5.0.1 Release Ohos_sdk_public 5.0.1.115 (API Version 13 Release)
目录结构
|---- ElfRefresh
| |---- AppScrope # 示例代码文件夹
| |---- entry # 示例代码文件夹
| |---- examples # 示例代码文件夹
| |---- library # ElfRefresh库文件夹
| |---- build # ElfRefresh模块打包后的文件
| |---- src/main/ets/compontens/ElfRefreshComponent.ets # ElfRefresh刷新组件
| |---- index.ets # 对外接口
| |---- README.md # 安装使用方法
| |---- CHANGELOG.md # 更新日志
贡献代码
使用过程中发现任何问题都可以提 Issue
给我,当然,我也非常欢迎你给我发 PR 。
开源协议
本项目基于 MIT license ,请自由地享受和参与开源。
更多关于分享一个好用的HarmonyOS鸿蒙Next下拉刷新上拉加载组件的实战教程也可以访问 https://www.itying.com/category-93-b0.html
鸿蒙Next下拉刷新上拉加载组件是基于HarmonyOS的UI组件,用于实现列表数据的动态刷新和加载。该组件通过监听用户的手势操作,触发下拉刷新和上拉加载的事件,从而更新列表内容。组件的核心功能包括:
- 下拉刷新:当用户下拉列表时,组件会触发刷新事件,通常用于从服务器获取最新数据并更新列表。
- 上拉加载:当用户上拉列表时,组件会触发加载事件,通常用于加载更多数据并追加到列表末尾。
该组件的实现依赖于HarmonyOS的UI框架和事件处理机制。开发者可以通过继承Component
类或使用@Component
注解来定义自定义组件,并在onTouchEvent
方法中处理用户的手势操作。通过onRefresh
和onLoadMore
回调方法,开发者可以分别实现刷新和加载的逻辑。
鸿蒙Next下拉刷新上拉加载组件的优势在于其与HarmonyOS系统的深度集成,能够充分利用系统的性能优化和资源管理机制,确保在多种设备上都能流畅运行。此外,该组件还支持自定义样式和动画效果,开发者可以根据应用的需求进行个性化定制。
使用该组件时,开发者需要在build.gradle
文件中添加相应的依赖项,并在布局文件中声明组件。通过配置组件的属性和监听器,开发者可以轻松实现列表的刷新和加载功能。该组件适用于新闻、社交、电商等需要频繁更新数据的应用场景。
更多关于分享一个好用的HarmonyOS鸿蒙Next下拉刷新上拉加载组件的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
推荐使用SmartRefreshLayout
组件,它是鸿蒙Next中实现下拉刷新和上拉加载的常用解决方案。该组件支持自定义刷新头部和加载尾部,兼容多种布局,且性能优化良好。通过简单的配置,即可实现流畅的刷新和加载效果,适用于列表、网格等多种场景。集成方便,文档详细,是开发高效、用户体验优秀的首选组件。