# Ultra-Pull-To-Refresh_ohos **Repository Path**: isrc_ohos/ultra-pull-to-refresh_ohos ## Basic Information - **Project Name**: Ultra-Pull-To-Refresh_ohos - **Description**: 下拉后进行页面刷新 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 9 - **Forks**: 0 - **Created**: 2021-03-18 - **Last Updated**: 2022-11-01 ## Categories & Tags **Categories**: harmonyos-listview **Tags**: None ## README # Ultra-Pull-To-Refresh_ohos **本项目基于开源项目android-Ultra-Pull-To-Refresh 进行鸿蒙化的移植和开发,可以通过项目标签以及github地址( https://github.com/liaohuqiu/android-Ultra-Pull-To-Refresh )追踪到原安卓项目版本** #### 项目介绍 - 项目名称:通用下拉刷新组件 - 所属系列:鸿蒙的第三方组件适配移植 - 功能:下拉后进行页面刷新 - 项目移植状态:主功能完成 - 调用差异:无 - 开发版本:sdk5,DevEco Studio2.1 beta3 - 项目发起作者:徐泽鑫 - 邮箱:isrc_hm@iscas.ac.cn - 原项目Doc地址:https://github.com/liaohuqiu/android-Ultra-Pull-To-Refresh #### 效果演示 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0318/181234_234d7dd4_8558169.gif "p2r.gif") #### 项目介绍 - 编程语言:Java 下拉刷新被广泛应用于各类app中。当用户使用app时,下拉刷新已经成为一种潜意识的操作。 本项目基于原安卓项目对该组件进行鸿蒙化的移植和开发。 #### 安装教程 1. 下载p2r_library的har包p2r_library-debug.har(位于outputs文件夹下)。 2. 启动 DevEco Studio,将下载的har包,导入工程目录“entry->libs”下。 3. 在moudle级别下的build.gradle文件中添加依赖,在dependences标签中增加对libs目录下jar包的引用。 ``` dependencies { implementation fileTree(dir: 'libs', include: ['*.jar', '*.har']) …… } ``` 4. 在导入的har包上点击右键,选择“Add as Library”对包进行引用,选择需要引用的模块,点击“OK”即引用成功。 #### 使用说明 组件主要由头部header和主页面content组成。 header用于显示UI动画提示用户正在加载更新,content展示主页面内容。 1. 下拉刷新组件有以下定义细节: 刷新距离:header下拉需要达到一定距离才会触发刷新。这个距离定义为刷新距离。 刷新时保持头部的距离:刷新时,显示header动画效果表示正在加载更新,此时header的下拉距离定义为刷新时保持头部的距离。 释放刷新:header下拉达到刷新距离不触发刷新,手指释放后才会触发刷新。 达到刷新距离后,手指上滑使得下拉距离小于刷新距离,此时释放,不会触发刷新,header立即回到初始位置。 刷新时保持头部:如果设置刷新时保持头部,刷新时显示header动画效果表示正在加载更新,刷新完成之后,header回到初始位置。 如果不设置刷新时保持头部,释放之后,header立即回到初始位置。 本项目将刷新距离和刷新时保持头部距离合并为同一个距离,实现了释放刷新,并可选择是否设置保持头部。 2.接口和实现 ``` PtrHandler接口 onRefreshBegin() 开始刷新时,调用这个方法进行数据刷新 checkCanDoRefresh() 调用这个方法确定下拉刷新的时机 onRefreshComplete() 刷新完成时,调用这个方法进行相关操作 PtrUIHandler接口 onUIRefreshPrepare() header被下拉,下拉距离没有达到刷新距离,调用这个方法进行相应操作 onUIRefreshBegin() header被下拉,下拉距离达到刷新距离,调用这个方法,开始刷新动画 onUIRefreshComplete() 刷新动画完成调用该方法进行相应操作 onUIPositionOver() header被下拉,下拉距离超过刷新距离,调用这个方法进行相应操作 Header使用了PtrUIHandler接口 setPullRefreshHeight(int pullRefreshHeight) 设置刷新距离 setmImage(Image mImage) 设置刷新动画相关图片 setText(Text mText) 设置刷新动画相关文本 ptrLayout使用了PtrHandler接口 setHeader(abstractHeader header) 设置头部组件 setContent(Component content) 设置主页面content setPtrHandler(PtrHandler ptrHandler) 设置刷新接口 使用时可以通过继承Header和ptrLayout重写PtrUIHandler和PtrHandler接口中的方法实现自己定义的刷新动画效果和数据刷新效果 具体使用样例可以参考entry ``` ## 测试信息 CodeCheck代码测试无异常 VirusTotal病毒安全检测通过 测试员:黎天宁 #### 版本迭代 - v0.1.0 #### 版权和许可信息 Ultra-Pull-To-Refresh_ohos经过[Apache License, version 2.0](http://www.apache.org/licenses/LICENSE-2.0)授权许可。