【OpenHarmony】 鸿蒙 UI开辟之 PullToRefresh组件

打印 上一主题 下一主题

主题 831|帖子 831|积分 2493

简介

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

    内置动画效果
   

   

    下载安装

                      登录后复制                  
  1. ohpm install @ohos/pulltorefresh
复制代码
     

  • 1.
             使用分析

    快速使用

                      登录后复制                  
  1. // V1装饰器下的使用方式
  2. import { PullToRefresh } from '@ohos/pulltorefresh'
  3. // 需绑定列表或宫格组件
  4. private scroller: Scroller = new Scroller();
  5. PullToRefresh({
  6. // 必传项,列表组件所绑定的数据
  7. data: $data,
  8. // 必传项,需绑定传入主体布局内的列表或宫格组件
  9. scroller: this.scroller,
  10. // 必传项,自定义主体布局,内部有列表或宫格组件
  11. customList: () => {
  12.   // 一个用@Builder修饰过的UI方法
  13.   this.getListView();
  14. },
  15. // 可选项,下拉刷新回调
  16. onRefresh: () => {
  17.   return new Promise<string>((resolve, reject) => {
  18.     // 模拟网络请求操作,请求网络2秒后得到数据,通知组件,变更列表数据
  19.     setTimeout(() => {
  20.       resolve('刷新成功');
  21.       this.data = [...this.dataNumbers];
  22.     }, 2000);
  23.   });
  24. },
  25. // 可选项,上拉加载更多回调
  26. onLoadMore: () => {
  27.   return new Promise<string>((resolve, reject) => {
  28.     // 模拟网络请求操作,请求网络2秒后得到数据,通知组件,变更列表数据
  29.     setTimeout(() => {
  30.       resolve('');
  31.       this.data.push("增加的条目" + this.data.length);
  32.     }, 2000);
  33.   });
  34. },
  35. customLoad: null,
  36. customRefresh: null,
  37. })
  38. // V2装饰器下的使用方式
  39. import { PullToRefreshV2 } from '@ohos/pulltorefresh'
  40. // 需绑定列表或宫格组件
  41. private scroller: Scroller = new Scroller();
  42. PullToRefreshV2({
  43.    // 可选项,列表组件所绑定的数据
  44.    data: this.data,
  45.    // 必传项,需绑定传入主体布局内的列表或宫格组件
  46.    scroller: this.scroller,
  47.    // 必传项,自定义主体布局,内部有列表或宫格组件
  48.    customList: () => {
  49.       // 一个用@Builder修饰过的UI方法
  50.       this.getListView();
  51.    },
  52.    // 可选项,下拉刷新回调
  53.    onRefresh: () => {
  54.       return new Promise<string>((resolve, reject) => {
  55.          // 模拟网络请求操作,请求网络2秒后得到数据,通知组件,变更列表数据
  56.          setTimeout(() => {
  57.             resolve('刷新成功');
  58.             this.data = [...this.dataNumbers];
  59.          }, 2000);
  60.       });
  61.    },
  62.    // 可选项,上拉加载更多回调
  63.    onLoadMore: () => {
  64.       return new Promise<string>((resolve, reject) => {
  65.          // 模拟网络请求操作,请求网络2秒后得到数据,通知组件,变更列表数据
  66.          setTimeout(() => {
  67.             resolve('');
  68.             this.data.push("增加的条目" + this.data.length);
  69.          }, 2000);
  70.       });
  71.    },
  72.    customLoad: null,
  73.    customRefresh: null,
  74. })
复制代码
     

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
             设置属性示例和设置自定义动画示例请看示例entry
    使用限定

    1、现在只支持List、Scroll、Tabs、Grid和WaterFlow系统容器组件;
2、暂不支持设置系统容器组件的弹簧效果和阴影效果,使用时需要将系统组件edgeEffect属性的值设置为(EdgeEffect.None);
3、暂不支持页面触底时自动触发上拉加载功能;
4、暂不支持在页面数据不满一屏时触发上拉加载功能;
5、暂不支持通过代码的方式去触发下拉革新功能;
6、暂不支持在下拉革新动画结束时提供手势结束的回调;
    支持lazyForEarch的数据作为数据源

    LazyForEach从提供的数据源中按需迭代数据,并在每次迭代过程中创建相应的组件。当LazyForEach在滚动容器中使用了,框架会根据滚动容器可视区域按需创建组件,当组件滑出可视区域外时,框架会举行组件烧毁回收以降低内存占用 接口描述:
                      登录后复制                  
  1. LazyForEach(
  2.     dataSource: IDataSource,             // 需要进行数据迭代的数据源
  3.     itemGenerator: (item: any, index?: number) => void,  // 子组件生成函数
  4.     keyGenerator?: (item: any, index?: number) => string // 键值生成函数
  5. ): void
复制代码
     

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
             IDataSource类型分析
                      登录后复制                  
  1. interface IDataSource {
  2.     totalCount(): number; // 获得数据总数
  3.     getData(index: number): Object; // 获取索引值对应的数据
  4.     registerDataChangeListener(listener: DataChangeListener): void; // 注册数据改变的监听器
  5.     unregisterDataChangeListener(listener: DataChangeListener): void; // 注销数据改变的监听器
  6. }
复制代码
     

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
             DataChangeListener类型分析
                      登录后复制                  
  1. interface DataChangeListener {
  2.     onDataReloaded(): void; // 重新加载数据时调用
  3.     onDataAdded(index: number): void; // 添加数据时调用
  4.     onDataMoved(from: number, to: number): void; // 数据移动起始位置与数据移动目标位置交换时调用
  5.     onDataDeleted(index: number): void; // 删除数据时调用
  6.     onDataChanged(index: number): void; // 改变数据时调用
  7.     onDataAdd(index: number): void; // 添加数据时调用
  8.     onDataMove(from: number, to: number): void; // 数据移动起始位置与数据移动目标位置交换时调用
  9.     onDataDelete(index: number): void; // 删除数据时调用
  10.     onDataChange(index: number): void; // 改变数据时调用
  11. }
复制代码
     

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
             具体使用请看 openharmony:LazyForEach:数据懒加载
    DD一下: 鸿蒙开辟各类文档,也可关注公众号<程序猿百晓生>获取。

                      登录后复制                  
  1. 1.OpenHarmony开发基础
  2. 2.OpenHarmony北向开发环境搭建
  3. 3.鸿蒙南向开发环境的搭建
  4. 4.鸿蒙生态应用开发白皮书V2.0 & V3.0
  5. 5.鸿蒙开发面试真题(含参考答案)
  6. 6.TypeScript入门学习手册
  7. 7.OpenHarmony 经典面试题(含参考答案)
  8. 8.OpenHarmony设备开发入门【最新版】
  9. 9.沉浸式剖析OpenHarmony源代码
  10. 10.系统定制指南
  11. 11.【OpenHarmony】Uboot 驱动加载流程
  12. 12.OpenHarmony构建系统--GN与子系统、部件、模块详解
  13. 13.ohos开机init启动流程
  14. 14.鸿蒙版性能优化指南
  15. .......
复制代码
     

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
             属性(接口)分析

    PullToRefresh/PullToRefreshV2组件属性

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

    接口参数类型释义默认值setHasRefreshboolean是否具有下拉革新功能truesetHasLoadMoreboolean是否具有上拉加载功能truesetMaxTranslatenumber可下拉上拉的最大距离100setSensitivitynumber下拉上拉灵敏度0.7setListIsPlacementboolean滑动结束后列表是否归位truesetAnimDurationnumber滑动结束后,回弹动画执行时间150setRefreshHeightnumber下拉动画高度30setRefreshColorstring下拉动画颜色‘#999999’setRefreshBackgroundColorResourceColor下拉动画区域配景色‘rgba(0,0,0,0)’setRefreshTextColorResourceColor下拉加载完毕后提示文本的字体颜色‘#999999’setRefreshTextSizenumber 或 string 或 Resource下拉加载完毕后提示文本的字体巨细18setRefreshAnimDurationnumber下拉动画执行一次的时间,仅在自定义下拉革新动画时有效1000setRefreshCompleteTextHoldTimenumber下拉革新完毕后, 革新乐成文本停顿的时间1000setLoadImgHeightnumber上拉动画中图片的高度30setLoadBackgroundColorResourceColor上拉动画区域配景色‘rgba(0,0,0,0)’setLoadTextColorResourceColor上拉文本的字体颜色‘#999999’setLoadTextSizenumber 或 string 或 Resource上拉文本的字体巨细18setLoadTextPullUp1string上拉1阶段文本‘正在上拉革新…’setLoadTextPullUp2string上拉2阶段文本‘放开革新’setLoadTextLoadingstring上拉加载更多中时的文本‘正在玩命加载中…’
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

万万哇

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表