分享一个好用的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

2 回复

鸿蒙Next下拉刷新上拉加载组件是基于HarmonyOS的UI组件,用于实现列表数据的动态刷新和加载。该组件通过监听用户的手势操作,触发下拉刷新和上拉加载的事件,从而更新列表内容。组件的核心功能包括:

  1. 下拉刷新:当用户下拉列表时,组件会触发刷新事件,通常用于从服务器获取最新数据并更新列表。
  2. 上拉加载:当用户上拉列表时,组件会触发加载事件,通常用于加载更多数据并追加到列表末尾。

该组件的实现依赖于HarmonyOS的UI框架和事件处理机制。开发者可以通过继承Component类或使用@Component注解来定义自定义组件,并在onTouchEvent方法中处理用户的手势操作。通过onRefreshonLoadMore回调方法,开发者可以分别实现刷新和加载的逻辑。

鸿蒙Next下拉刷新上拉加载组件的优势在于其与HarmonyOS系统的深度集成,能够充分利用系统的性能优化和资源管理机制,确保在多种设备上都能流畅运行。此外,该组件还支持自定义样式和动画效果,开发者可以根据应用的需求进行个性化定制。

使用该组件时,开发者需要在build.gradle文件中添加相应的依赖项,并在布局文件中声明组件。通过配置组件的属性和监听器,开发者可以轻松实现列表的刷新和加载功能。该组件适用于新闻、社交、电商等需要频繁更新数据的应用场景。

更多关于分享一个好用的HarmonyOS鸿蒙Next下拉刷新上拉加载组件的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


推荐使用SmartRefreshLayout组件,它是鸿蒙Next中实现下拉刷新和上拉加载的常用解决方案。该组件支持自定义刷新头部和加载尾部,兼容多种布局,且性能优化良好。通过简单的配置,即可实现流畅的刷新和加载效果,适用于列表、网格等多种场景。集成方便,文档详细,是开发高效、用户体验优秀的首选组件。

回到顶部