鸿蒙自定义刷新组件使用

这篇具有很好参考价值的文章主要介绍了鸿蒙自定义刷新组件使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

DevEco Studio版本:4.0.0.600

鸿蒙自定义刷新组件使用,鸿蒙,自定义刷新组件,harmonyos,OpenHarmony

1、RefreshLibrary_HarmonyOS.har,用于HarmonyOS

        "minAPIVersion": 9,

        "targetAPIVersion": 9,

        "apiReleaseType": "Release",

        "compileSdkVersion": "3.2.3.6",

        "compileSdkType": "HarmonyOS"

2、RefreshLibrary_OpenHarmony.har , 用于OpenHarmony

        "minAPIVersion": 9,

        "targetAPIVersion": 10,

        "apiReleaseType": "Release",

        "compileSdkVersion": "4.0.10.13",

         "compileSdkType": "OpenHarmony"

注:下面示例都是以RefreshLibrary_OpenHarmony.har 为例

使用效果:

鸿蒙自定义刷新组件使用,鸿蒙,自定义刷新组件,harmonyos,OpenHarmony 鸿蒙自定义刷新组件使用,鸿蒙,自定义刷新组件,harmonyos,OpenHarmony 鸿蒙自定义刷新组件使用,鸿蒙,自定义刷新组件,harmonyos,OpenHarmony

har包下载:

下载地址:https://download.csdn.net/download/Abner_Crazy/88754702

如何使用

第一步:har包引用

参考文档:

Harmony如何引用har包

List列表使用

通过上面的下载链接下载之后,把har包复制到项目中,在项目src/main目录下新建目录lib,将har包复制进去。

鸿蒙自定义刷新组件使用,鸿蒙,自定义刷新组件,harmonyos,OpenHarmony

然后在项目的oh-package.json5中添加对har包的引用,添加完成后会报错,只需要将鼠标放在错误处,出现Run 'ohpm install'后执行下就行了。

"dependencies": {
 "@app/RefreshLibrary": "file:./src/main/libs/RefreshLibrary_OpenHarmony.har"
}

鸿蒙自定义刷新组件使用,鸿蒙,自定义刷新组件,harmonyos,OpenHarmony

第二步:查看引用是否成功

引用成功后会在项目目录下生成一个oh_modules目录,如果有@app/RefreshLibrary则成功,无则失败。

鸿蒙自定义刷新组件使用,鸿蒙,自定义刷新组件,harmonyos,OpenHarmony

第三步:代码使用

1、RefreshListView调用(带默认刷新头部和尾部)
RefreshListView({
   list: this.list,
   controller: this.controller,
   refreshLayout: (item, index): void => this.itemLayout(item, index),
   onItemClick: (item, index) => {
      console.info("Index------   点击了:index: " + index + " item: " + item)
   },
   onRefresh: () => {
      //下拉刷新
   },
   onLoadMore: () => {
      //上拉加载
   }
})

参数解释:

属性 是否必须 描述
list 必须 数据源,数组类型
controller 必须

刷新控件的控制器,控制关闭下拉刷新和上拉加载

finishRefresh():关闭下拉刷新

finishLoadMore():关闭上拉加载

refreshLayout 必须 子item的视图
onRefresh 非必须 下拉刷新的回调
onLoadMore 非必须 上拉加载的回调
onItemClick 非必须 item的点击事件回调
2、RefreshView调用(刷新头部和尾部需要自定义)
RefreshView({
   list: this.list,
   controller: this.controller,
   headerLayout: () => this.headerLayout(), //下拉刷新布局
   footLayout: () => this.footLayout(), //上拉加载布局
   refreshLayout: (item, index): void => this.itemLayout(item, index),
   onItemClick: (item, index) => {
      console.info("Index------   点击了:index: " + index + " item: " + item)
   },
   onRefresh: () => {
      //下拉刷新
   },
   onLoadMore: () => {
      //上拉加载
   }
})

参数解释:

属性 是否必须 描述
list 必须 数据源,数组类型
controller 必须

刷新控件的控制器,控制关闭下拉刷新和上拉加载

finishRefresh():关闭下拉刷新

finishLoadMore():关闭上拉加载

refreshLayout 必须 子item的视图
headerLayout 必须 自定义下拉刷新的视图样式
footLayout 必须 自定义上拉加载的视图样式
onRefresh 非必须 下拉刷新的回调
onLoadMore 非必须 上拉加载的回调
onItemClick 非必须 item的点击事件回调

第四步:详细示例

import { RefreshController, RefreshView, RefreshListView } from "@app/RefreshLibrary"

@Entry
@Component
struct Index {
   @State list: Array<number> = []
   @State controller: RefreshController = new RefreshController()

   aboutToAppear() {
      this.refreshData()
   }

   // 刷新测试数据
   private refreshData() {
      this.list = []
      for (var i = 0; i < 10; i++) {
         this.list.push(i)
      }
   }

   // 加载更多测试数据
   private loadMoreData() {
      let initValue = this.list[this.list.length-1] + 1
      this.list.push(initValue)
   }

   @Builder
   itemLayout(item: object, index: number) {
      Text("我是测试数据: " + index)
         .width("95%")
         .height(50)
         .margin(10)
         .textAlign(TextAlign.Center)
         .border({ width: 1, color: Color.Blue })
   }

   @Builder
   headerLayout() {
      Text("我是自定义头部")
         .width("100%")
         .height(50)
         .margin(10)
         .textAlign(TextAlign.Center)
   }

   @Builder
   footLayout() {
      Text("我是自定义底部")
         .width("100%")
         .height(50)
         .margin(10)
         .textAlign(TextAlign.Center)
   }

   build() {
      Stack() {
         RefreshView({
            list: this.list,
            controller: this.controller,//如果是3.1的DevEcoStudio,this.controller会报错,使用$controller代替
            headerLayout: () => this.headerLayout(), //下拉刷新布局
            footLayout: () => this.footLayout(), //上拉加载布局
            refreshLayout: (item, index): void => this.itemLayout(item, index),
            onItemClick: (item, index) => {
               console.info("Index------   点击了:index: " + index + " item: " + item)
            },
            onRefresh: () => {
               //下拉刷新
               console.info("Index------   onRefresh")
               //模拟数据加载
               setTimeout(() => {
                  this.controller.finishRefresh()
                  this.refreshData()
               }, 2000)
            },
            onLoadMore: () => {
               //上拉加载
               console.info("Index------   onLoadMore")
               //模拟数据加载
               setTimeout(() => {
                  this.controller.finishLoadMore()
                  this.loadMoreData()
               }, 2000)
            }
         })

         // RefreshListView({
         //    list: this.list,
         //    controller: this.controller,
         //    // headerLayout: () => this.headerLayout(), //下拉刷新布局
         //    // footLayout: () => this.footLayout(), //上拉加载布局
         //    refreshLayout: (item, index): void => this.itemLayout(item, index),
         //    onItemClick: (item, index) => {
         //       console.info("Index------   点击了:index: " + index + " item: " + item)
         //    },
         //    onRefresh: () => {
         //       //下拉刷新
         //       console.info("Index------   onRefresh")
         //       //模拟数据加载
         //       setTimeout(() => {
         //          this.controller.finishRefresh()
         //          this.refreshData()
         //       }, 2000)
         //    },
         //    onLoadMore: () => {
         //       //上拉加载
         //       console.info("Index------   onLoadMore")
         //       //模拟数据加载
         //       setTimeout(() => {
         //          this.controller.finishLoadMore()
         //          this.loadMoreData()
         //       }, 2000)
         //    }
         // })
      }
      .width('100%')
      .height('100%')
   }
}

第五步:使用自定义headerLayout和footLayout效果

鸿蒙自定义刷新组件使用,鸿蒙,自定义刷新组件,harmonyos,OpenHarmony  鸿蒙自定义刷新组件使用,鸿蒙,自定义刷新组件,harmonyos,OpenHarmony文章来源地址https://www.toymoban.com/news/detail-819433.html

到了这里,关于鸿蒙自定义刷新组件使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HarmonyOS/OpenHarmony应用开发-Stage模型UIAbility组件使用(五)

    UIAbility组件间交互(设备内) UIAbility是系统调度的最小单元。在设备内的功能模块之间跳转时,会涉及到启动特定的UIAbility,该UIAbility可以是应用内的其他UIAbility,也可以是其他应用的UIAbility(例如启动三方支付UIAbility)。 本文将从如下场景分别介绍设备内UIAbility间的交互

    2024年02月16日
    浏览(34)
  • HarmonyOS/OpenHarmony应用开发-Stage模型UIAbility组件使用(一)

    一、UIAbility组件概述 1.概述 UIAbility组件是一种包含UI界面的应用组件,主要用于和用户交互。 UIAbility组件是系统调度的基本单元,为应用提供绘制界面的窗口;一个UIAbility组件中可以通过多个页面来实现一个功能模块。每一个UIAbility组件实例,都对应于一个最近任务列表中的

    2024年02月11日
    浏览(42)
  • HarmonyOS/OpenHarmony应用开发-Stage模型UIAbility组件使用(六)

    本文将从如下场景分别介绍设备内UIAbility间的交互方式。 启动应用内的UIAbility。启动应用内的UIAbility并获取返回结果。启动其他应用的UIAbility。启动其他应用的UIAbility并获取返回结果。启动UIAbility的指定页面。通过Call调用实现UIAbility交互(仅对系统应用开放)。 当使用隐式

    2024年02月16日
    浏览(36)
  • [Linux]华为的系统 欧拉 鸿蒙 openEuler HarmonyOS OpenHarmony

    之前整理过《华为机器运行什么桌面系统?EulerOS openEuler LiteOS 鸿蒙 深度 UOS》,但差不多快两年了,今天再梳理下华为目前提供的主要系统: openEuler | open欧拉 定位是服务器操作系统 是基于CentOS的 Linux 发行版,开源、免费 其商业发行版由麒麟软件、统信软件等提供(如:统

    2024年02月09日
    浏览(53)
  • HarmonyOS 鸿蒙开发DevEco Studio OpenHarmony:配置开发环境

    目录 下载OpenHarmony SDK及工具链 参考信息 配置DevEco Studio代理 配置NPM代理 在进行OpenHarmony应用/服务开发前,需要提前在DevEco Studio中下载对应版本的SDK。下载OpenHarmony SDK需要连接网络,一般情况下,可以直接下载;但部分用户的网络可能受限,此时需要先根据参考信息 配置相

    2024年02月19日
    浏览(46)
  • HarmonyOS 鸿蒙开发DevEco Studio OpenHarmony:编译构建概述

    目录 OpenHarmony构建体系 构建工具Hvigor 构建插件hvigor-ohos-plugin 工程目录及配置文件说明 如何构建应用/服务 启动应用/服务构建 查看编译过程

    2024年02月22日
    浏览(43)
  • HarmonyOS鸿蒙应用开发( 四、重磅组件List列表组件使用详解)

    List列表组件,是一个非常常用的组件。可以说在一个应用中,它的身影无处不在。它包含一系列相同宽度的列表项,适合连续、多行呈现同类数据,如商品列表、图片列表和和文本列表等。ArkUI 框架采用 List 容器组件创建列表(类似 Android 的 RecycleView、Compose 的 LazyColumn)。

    2024年01月24日
    浏览(44)
  • harmonyOS鸿蒙官网教程-Web组件的使用

    相信大家都遇到过这样的场景,有时候我们点击应用的页面,会跳转到一个类似浏览器加载的页面,加载完成后,才显示这个页面的具体内容,这个加载和显示网页的过程通常都是浏览器的任务。 ArkUI为我们提供了Web组件来加载网页,借助它我们就相当于在自己的应用程序里

    2024年01月21日
    浏览(38)
  • 华为新发布的鸿蒙与目前华为手机的鸿蒙系统有什么差异,OpenHarmony、HarmonyOS、HarmonyOS NEXT的区别详解

    最近工作中需要进行鸿蒙适配,一开始我有个疑问,今年新发布的鸿蒙系统,与目前华为手机使用的鸿蒙系统有什么差异?为什么要专门进行适配?如果大家也有类似的疑问,看完这篇就明白了。 今年华为在鸿蒙生态千帆启航仪式上正式发布了鸿蒙原生操作系统——HarmonyO

    2024年04月17日
    浏览(42)
  • OpenHarmony/HarmonyOS投播组件

    本模块提供创建投播组件AVCastPicker的功能,提供设备发现连接的统一入口。 AVCastPicker() 投播组件,可用于将音视频资源投放到其它设备播放。 投播功能的示例说明参考如下。

    2024年02月13日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包