HarmonyOS开发:开源一个刷新加载组件

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

前言

系统Api中提供了下拉刷新组件Refresh,使用起来也是非常的好用,但是风格和日常的开发,有着巨大的出入,效果如下:

HarmonyOS开发:开源一个刷新加载组件,HarmonyOS点石成金,HarmonyOs刷新组件,鸿蒙下拉刷新,鸿蒙上拉加载,鸿蒙刷新组件

显然上面的效果是很难满足我们实际的需求的,奈何也没有提供的属性可以更改,没有办法只好动手封装一个。

本篇的文章内容大致如下:

1、下拉和上拉效果展示

2、快速使用

3、具体实现

4、最后总结

一、下拉和上拉效果展示

效果呢很是简单,第一版只支持默认的效果,后续会逐渐支持自定义下拉请求头和上拉加载尾。

HarmonyOS开发:开源一个刷新加载组件,HarmonyOS点石成金,HarmonyOs刷新组件,鸿蒙下拉刷新,鸿蒙上拉加载,鸿蒙刷新组件

 

二、快速使用

私服和远程依赖,由于权限和审核问题,预计需要等到2024年第一季度面向所有开发者,所以,只能使用本地静态共享包和源码 两种使用方式,本地静态共享包类似Android中的aar依赖,直接复制到项目中即可。

本地静态共享包har包使用

首先,下载har包,点击下载

下载之后,把har包复制项目中,目录自己创建,如下,我创建了一个libs目录,复制进去。

HarmonyOS开发:开源一个刷新加载组件,HarmonyOS点石成金,HarmonyOs刷新组件,鸿蒙下拉刷新,鸿蒙上拉加载,鸿蒙刷新组件

引入之后,进行同步项目,点击Sync Now即可,当然了你也可以,将鼠标放置在报错处会出现提示,在提示框中点击Run 'ohpm install'

需要注意,@app/refresh,是用来区分目录的,可以自己定义,比如@aa/bb等,关于静态共享包的创建和使用,请查看如下我的介绍,这里就不过多介绍

HarmonyOS开发:走进静态共享包的依赖与使用

查看是否引用成功

无论使用哪种方式进行依赖,最终都会在使用的模块中,生成一个oh_modules文件,并创建源代码文件,有则成功,无则失败,如下:

HarmonyOS开发:开源一个刷新加载组件,HarmonyOS点石成金,HarmonyOs刷新组件,鸿蒙下拉刷新,鸿蒙上拉加载,鸿蒙刷新组件

代码使用

目前提供了三种用法,一种是ListView形式,就是单列表形式,一种是GridView形式,也就是网格列表形式,还有一种就是RefreshLayout形式,支持任何的组件形式,比如Column,Row等等。

1、ListView形式

ListView({
       items: this.array, //数据源 数组
       itemLayout: (item, index) => this.itemLayout(item, index),//条目布局
       controller: this.controller, //控制器,负责关闭下拉和上拉
       onRefresh: () => {
         //下拉刷新
         this.controller.finishRefresh()
       },
       onLoadMore: () => {
         //上拉加载
         this.controller.finishLoadMore()
       }
     })
其他相关属性介绍

属性

类型

概述

listAttribute

ListAttr

ListView的相关属性

listItemAttribute

ListItemAttr

ListView的Item相关属性

marginHeader

number

距离头部多少距离,用于顶部有固定组件时使用

ListAttr

属性

类型

概述

width

Length

宽度

height

Length

高度

backgroundColor

ResourceColor

背景颜色,默认透明

listDirection

Axis

设置List组件排列方向。默认值:Axis.Vertical

divider

对象

设置ListItem分割线样式,默认无分割线。

scrollBar

BarState

设置滚动条状态

cachedCount

number

设置列表中ListItem/ListItemGroup的预加载数量

edgeEffect

EdgeEffect

设置组件的滑动效果

ListItemAttr

属性

类型

概述

width

Length

宽度

height

Length

高度

backgroundColor

ResourceColor

背景颜色,默认透明

onClick

回调方法

点击事件

2、GridView形式

GridView({
        items: this.array,//数据源 数组
        itemLayout: (item, index) => this.itemLayout(item, index),//条目布局
        controller: this.controller,//控制器,负责关闭下拉和上拉
        onRefresh: () => {
          //下拉刷新
          this.controller.finishRefresh()//关闭下拉刷新
        },
        onLoadMore: () => {
          //上拉加载
          this.controller.finishLoadMore()//关闭上拉加载
        }
      })
其他相关属性介绍

属性

类型

概述

gridAttribute

GridAttr

GridView相关属性

gridItemAttribute

GridItemAttr

GridView的Item相关属性

marginHeader

number

距离头部多少距离,用于顶部有固定组件时使用

GridAttr

属性

类型

概述

width

Length

宽度

height

Length

高度

backgroundColor

ResourceColor

背景颜色,默认透明

columnsTemplate

string

设置当前网格布局列的数量,不设置时默认2列

rowsTemplate

string

设置当前网格布局行的数量,不设置时默认1行。

columnsGap

Length

设置列与列的间距。默认值:0

rowsGap

Length

设置行与行的间距。默认值:0

scrollBar

BarState

设置滚动条状态。默认值:BarState.Off

scrollBarColor

string / number / Color

设置滚动条的颜色。

scrollBarWidth

string / number /

设置滚动条的宽度。

cachedCount

number

设置预加载的GridItem的数量,只在LazyForEach中生效。

GridItemAttr

属性

类型

概述

width

Length

宽度

height

Length

高度

margin

Margin / Length

边距

padding

Padding / Length

内边距

backgroundColor

ResourceColor

背景颜色,默认透明

onClick

回调方法

点击事件

3、RefreshLayout形式

RefreshLayout({
        controller: this.controller,//控制器,负责关闭下拉和上拉
        onRefresh: () => {
          //下拉刷新
          this.controller.finishRefresh() //关闭下拉刷新
        }, onLoadMore: () => {
          //上拉加载
          this.controller.finishLoadMore() //关闭上拉加载
        } }) {
        //可以是任何组件 List/Grid/Column/Row/Text/……
         
      }

4、头部固定组件方式

这种情况也颇为常见,就是列表在一个固定的组件下方,如下图所示,那么这种实现方式有一个潜在的约束,那就是,必须使用Stack作为根布局,并且头组件在刷新组件下方。

HarmonyOS开发:开源一个刷新加载组件,HarmonyOS点石成金,HarmonyOs刷新组件,鸿蒙下拉刷新,鸿蒙上拉加载,鸿蒙刷新组件

项目代码实现

Stack() {
      ListView({
        items: this.array, //数据源 数组
        itemLayout: (item, index) => this.itemLayout(item, index),
        controller: this.controller, //控制器,负责关闭下拉和上拉
        marginHeader: 80,
        onRefresh: () => {
          //下拉刷新
          this.controller.finishRefresh()
        },
        onLoadMore: () => {
          //上拉加载
          this.controller.finishLoadMore()
        }
      })
 
 
      Row() {
        Text("我是标题")
      }.width("100%")
      .height(80)
      .backgroundColor(Color.Pink)
      .justifyContent(FlexAlign.Center)
 
    
    }.alignContent(Alignment.Top)

三、具体实现

实现起来无比的简单,所谓的头和尾,均在列表组件的上下位置,使用offset属性控制其位置,默认在屏幕外部,等手势移动的时候,慢慢展示出头,尾部的话一般也在屏幕外,考虑到列表的展示,会根据数据的多少进行控制,尾部尽量设置在列表的下方即可。

HarmonyOS开发:开源一个刷新加载组件,HarmonyOS点石成金,HarmonyOs刷新组件,鸿蒙下拉刷新,鸿蒙上拉加载,鸿蒙刷新组件

手势往下拉时,改变offset,缓缓地展示出来。

HarmonyOS开发:开源一个刷新加载组件,HarmonyOS点石成金,HarmonyOs刷新组件,鸿蒙下拉刷新,鸿蒙上拉加载,鸿蒙刷新组件

后续等其他功能完善之后,会进行源码地一个解析,请大家持续关注。

四、最后总结

Demo地址:

https://github.com/AbnerMing888/HarmonyOsRefresh

目前支持默认的下拉刷新头和上拉加载尾,暂时不支持自定义,后续有时间了就会暴露出来,大家在使用的时候,特别是RefreshLayout形式,一定要自己控制下拉和上拉的状态,也就是什么时候执行上拉,什么时候执行下拉,举例:如果是一个垂直的列表,那么索引为0可见,即可下拉刷新,索引为最后一个,即可上拉加载。文章来源地址https://www.toymoban.com/news/detail-739822.html

到了这里,关于HarmonyOS开发:开源一个刷新加载组件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • HarmonyOS开发:探索组件化模式开发

    组件化一直是移动端比较流行的开发方式,有着编译运行快,业务逻辑分明,任务划分清晰等优点,针对Android端的组件化,之前有比较系统的总结过相关文章,感兴趣的朋友,可以查看,点击直达;与Android端的组件化相比,HarmonyOS的组件化可以说实现起来就颇费一番周折,

    2024年02月08日
    浏览(33)
  • HarmonyOs开发之———容器组件使用

    谢谢关注!! 前言:上一篇文章主要介绍HarmonyOS 开发之———基础组件的使用。如需了解谢谢查阅: 一、在HarmonyOS中,不同的容器组件拥有各自的属性,用于控制布局和组件的展示方式。以下是Stack(堆栈)、Column(列)、Row(行)、Flex(弹性盒子)和Grid(网格)这些容器

    2024年04月10日
    浏览(28)
  • 项目开发之vue中如何刷新子组件,重置组件,重新加载子组件

    在父组件循环数据列表中,列表中有事件点击打开某个子组件; 父组件中要更新子组件的值 在父组件循环数据列表中,点击打开某个子组件,A数据打开子组件后,B数据再打开子组件,此时子组件中会有缓存A数据。 子组件没有刷新,还是停留在上一个数据缓存 给组件添加

    2024年02月12日
    浏览(34)
  • HarmonyOS/OpenHarmony应用开发-ArkTS语言渲染控制LazyForEach数据懒加载

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

    2024年02月11日
    浏览(32)
  • HarmonyOS开发(十一):ArkTS组件通用属性

    用来设置组件的宽度、边距 相关属性 名称 参数说明 描术 width Length 设置组件的自身宽度,缺省的情况组件宽度为其内容的宽度 height Length 设置组件的自身高度,缺省的情况组件高度为其内容的度度 size {   width?:Length,   height?:Length } 设置组件的宽度尺寸 padding Padding | Length 设

    2024年01月20日
    浏览(29)
  • uniapp开发使用插件z-paging实现页面下拉刷新、上拉加载,分页加载

    在uniapp官网有一个比较好用的插件z-paging,可以实现多条数据滚动显示或者自定义下拉刷新,分页显示......在开发消息页面或者app开发需要大量的页面刷新,页面内容过长,减轻服务器的负担就可以使用此插件,进入app智慧加载部分内容,等到再次需要之后的内容就再次加载

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

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

    2024年01月24日
    浏览(44)
  • 开发指导—利用组件&插值器动画实现 HarmonyOS 动效

    在组件上创建和运行动画的快捷方式。具体用法请参考通用方法。 通过调用 animate 方法获得 animation 对象,animation 对象支持动画属性、动画方法和动画事件。 说明 ● 使用 animate 方法时必须传入 Keyframes 和 Options 参数。 ● 多次调用 animate 方法时,采用 replace 策略,即最后一

    2024年02月09日
    浏览(27)
  • HarmonyOS鸿蒙原生应用开发设计- 服务组件库

    HarmonyOS设计文档中,为大家提供了一些已经设计好的原生服务组件库,开发者可以根据需要直接引用。 开发者直接使用官方提供的服务组件库样式,既可以符合HarmonyOS原生应用的开发上架运营规范,又可以防止使用别人的内容产生的侵权意外情况等,减少自主创作设计的工作

    2024年02月08日
    浏览(46)
  • vue的element ui使用el-table组件实现懒加载树、默认自动展开层级(一层,二层)、并且解决新增、删除、修改之后树节点不刷新问题

    问题 :数据量太大了,导致接口返回数据时间较长。 解决 : 将ElementUi中Table组件加载改为懒加载(查看文档)。 思路 :初始化打开页面时只显示第一级菜单,用户点击展开菜单之后往后端发送请求,然后加载出一级子菜单;后台只用有一个根据菜单id查询他子菜单的接口就可以

    2024年01月16日
    浏览(30)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包