OpenHarmony环境下可用的下拉刷新、上拉加载组件【PullToRefresh】

简介

PullToRefresh是一款OpenHarmony环境下可用的下拉刷新、上拉加载组件。
支持设置内置动画的各种属性,支持设置自定义动画,支持lazyForEarch的数据作为数据源。

效果展示:

内置动画效果

下载安装

ohpm install @ohos/pulltorefresh

使用说明

快速使用

import { PullToRefresh } from '@ohos/pulltorefresh'

// 需绑定列表或宫格组件
private scroller: Scroller = new Scroller();
  
PullToRefresh({
// 必传项,列表组件所绑定的数据
data: $data,
// 必传项,需绑定传入主体布局内的列表或宫格组件
scroller: this.scroller,
// 必传项,自定义主体布局,内部有列表或宫格组件
customList: () => {
  // 一个用@Builder修饰过的UI方法
  this.getListView();
},
// 可选项,下拉刷新回调
onRefresh: () => {
  return new Promise<string>((resolve, reject) => {
    // 模拟网络请求操作,请求网络2秒后得到数据,通知组件,变更列表数据
    setTimeout(() => {
      resolve('刷新成功');
      this.data = this.dataNumbers;
    }, 2000);
  });
},
// 可选项,上拉加载更多回调
onLoadMore: () => {
  return new Promise<string>((resolve, reject) => {
    // 模拟网络请求操作,请求网络2秒后得到数据,通知组件,变更列表数据
    setTimeout(() => {
      resolve('');
      this.data.push("增加的条目" + this.data.length);
    }, 2000);
  });
},
customLoad: null,
customRefresh: null,
})

其中List组件需要设置edgeEffect属性为(EdgeEffect.None)

设置属性示例和设置自定义动画示例请看示例entry

支持lazyForEarch的数据作为数据源

LazyForEach从提供的数据源中按需迭代数据,并在每次迭代过程中创建相应的组件。当LazyForEach在滚动容器中使用了,框架会根据滚动容器可视区域按需创建组件,当组件滑出可视区域外时,框架会进行组件销毁回收以降低内存占用
接口描述:

LazyForEach(
    dataSource: IDataSource,             // 需要进行数据迭代的数据源
    itemGenerator: (item: any, index?: number) => void,  // 子组件生成函数
    keyGenerator?: (item: any, index?: number) => string // 键值生成函数
): void

IDataSource类型说明

interface IDataSource {
    totalCount(): number; // 获得数据总数
    getData(index: number): Object; // 获取索引值对应的数据
    registerDataChangeListener(listener: DataChangeListener): void; // 注册数据改变的监听器
    unregisterDataChangeListener(listener: DataChangeListener): void; // 注销数据改变的监听器
}

DataChangeListener类型说明

interface DataChangeListener {
    onDataReloaded(): void; // 重新加载数据时调用
    onDataAdded(index: number): void; // 添加数据时调用
    onDataMoved(from: number, to: number): void; // 数据移动起始位置与数据移动目标位置交换时调用
    onDataDeleted(index: number): void; // 删除数据时调用
    onDataChanged(index: number): void; // 改变数据时调用
    onDataAdd(index: number): void; // 添加数据时调用
    onDataMove(from: number, to: number): void; // 数据移动起始位置与数据移动目标位置交换时调用
    onDataDelete(index: number): void; // 删除数据时调用
    onDataChange(index: number): void; // 改变数据时调用
}

具体使用请看 openharmony:LazyForEach:数据懒加载

属性(接口)说明

PullToRefresh组件属性

属性类型释义默认值
dataObject[]列表或宫格组件所绑定的数据undefined
scrollerScroller列表或宫格组件所绑定的Scroller对象undefined
customList() => void 自定义主体布局,内部有列表或宫格组件undefined
refreshConfiguratorPullToRefreshConfigurator组件属性配置PullToRefreshConfigurator
mWidthLength容器宽undefined(自适应)
mHeightLength容器高undefined(自适应)
onRefresh() => Promise<string>下拉刷新回调1秒后结束下拉刷新动画并提示“刷新失败”
onLoadMore() => Promise<string>上拉加载更多回调1秒后结束上拉加载动画
customRefresh() => void 自定义下拉刷新动画布局undefined
onAnimPullDown(value?: number, width?: number, height?: number) => void下拉中回调undefined
onAnimRefreshing(value?: number, width?: number, height?: number) => void刷新中回调undefined
customLoad() => void自定义上拉加载动画布局undefined
onAnimPullUp(value?: number, width?: number, height?: number) => void上拉中回调undefined
onAnimLoading(value?: number, width?: number, height?: number) => void加载中回调undefined

PullToRefreshConfigurator类接口

接口参数类型释义默认值
setHasRefreshboolean是否具有下拉刷新功能true
setHasLoadMoreboolean是否具有上拉加载功能true
setMaxTranslatenumber可下拉上拉的最大距离100
setSensitivitynumber下拉上拉灵敏度0.7
setListIsPlacementboolean滑动结束后列表是否归位true
setAnimDurationnumber滑动结束后,回弹动画执行时间150
setRefreshHeightnumber下拉动画高度30
setRefreshColorstring下拉动画颜色‘#999999’
setRefreshBackgroundColorResourceColor下拉动画区域背景色‘rgba(0,0,0,0)’
setRefreshTextColorResourceColor下拉加载完毕后提示文本的字体颜色‘#999999’
setRefreshTextSizenumber 或 string 或 Resource下拉加载完毕后提示文本的字体大小18
setRefreshAnimDurationnumber下拉动画执行一次的时间1000
setLoadImgHeightnumber上拉动画中图片的高度30
setLoadBackgroundColorResourceColor上拉动画区域背景色‘rgba(0,0,0,0)’
setLoadTextColorResourceColor上拉文本的字体颜色‘#999999’
setLoadTextSizenumber 或 string 或 Resource上拉文本的字体大小18
setLoadTextPullUp1string上拉1阶段文本‘正在上拉刷新…’
setLoadTextPullUp2string上拉2阶段文本‘放开刷新’
setLoadTextLoadingstring上拉加载更多中时的文本‘正在玩命加载中…’

约束与限制

在下述版本验证通过:

  • DevEco Studio: 4.1 Canary(4.1.3.317), SDK: API11 (4.1.0.36)
  • DevEco Studio: 4.0 (4.0.3.512), SDK: API10 (4.0.10.9)
  • DevEco Studio: 4.0 Canary2(4.0.3.300), SDK: API10 (4.0.8.6)

为了能让大家更好的学习鸿蒙(HarmonyOS NEXT)开发技术,这边特意整理了《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05

《鸿蒙开发学习手册》:

如何快速入门:https://qr21.cn/FV7h05

  1. 基本概念
  2. 构建第一个ArkTS应用
  3. ……

开发基础知识:https://qr21.cn/FV7h05

  1. 应用基础知识
  2. 配置文件
  3. 应用数据管理
  4. 应用安全管理
  5. 应用隐私保护
  6. 三方应用调用管控机制
  7. 资源分类与访问
  8. 学习ArkTS语言
  9. ……

基于ArkTS 开发:https://qr21.cn/FV7h05

  1. Ability开发
  2. UI开发
  3. 公共事件与通知
  4. 窗口管理
  5. 媒体
  6. 安全
  7. 网络与链接
  8. 电话服务
  9. 数据管理
  10. 后台任务(Background Task)管理
  11. 设备管理
  12. 设备使用信息统计
  13. DFX
  14. 国际化开发
  15. 折叠屏系列
  16. ……

鸿蒙开发面试真题(含参考答案):https://qr18.cn/F781PH

鸿蒙开发面试大盘集篇(共计319页):https://qr18.cn/F781PH

1.项目开发必备面试题
2.性能优化方向
3.架构方向
4.鸿蒙开发系统底层方向
5.鸿蒙音视频开发方向
6.鸿蒙车载开发方向
7.鸿蒙南向开发方向

  • 29
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值