HarmonyOS NEXT开发实战:打造高效上拉刷新与下拉加载组件(一)空页面的设计与实现

news/2024/12/27 10:31:10/文章来源:https://www.cnblogs.com/wangerdan115/p/18634953

本文正在参加华为鸿蒙有奖征文征文活动

前言:

在鸿蒙开发的世界中,用户体验至关重要。我在网络上搜寻了一番,发现现有的上拉刷新和下拉加载组件要么功能不全,要么不够优雅。因此,我决定自己动手,打造一套既美观又实用的组件。本系列文章将深入解析如何使用鸿蒙系统组件封装出优秀的上拉刷新和下拉加载控件。今天,我们将从空页面的开发开始,探索如何在鸿蒙OS中实现这一功能。

页面展示


下拉刷新展示效果:

一、空页面的重要性与基本逻辑

空页面在应用中扮演着至关重要的角色,它不仅用于上拉刷新和下拉加载,还能在数据加载前提供用户友好的反馈。我们将空页面分为三种状态:失败视图、没有数据视图和正常数据视图。每种状态都有其特定的展示逻辑。

代码展示:

export enum EmptyStatus {fail, // 失败视图nodata, // 没有数据视图none // 正常数据视图
}

展示逻辑:

if(this.layoutType === EmptyStatus.none){// 正常页面
}else{// 异常页面
}

二、资源替换的灵活性

为了使组件更加灵活,我们允许开发者通过替换同名资源来自定义空页面的图片和文字。无论是网络异常还是数据为空,开发者都可以轻松地进行个性化设置。

代码示例:

Image($r("app.media.emptypage_net_error")).width(100)
Text($r("app.string.emptypage_net_error"))
Image($r("app.media.emptypage_no_data")).width(100)
Text($r("app.string.emptypage_no_data"))

三、按钮刷新的实现

我们为组件提供了一个外部传入的刷新函数,以便在用户点击刷新按钮时能够重新加载数据。

代码示例:

refresh? : () => void

四、完整代码展示

以下是空页面组件的完整代码,包括资源文件的定义和组件的实现。

资源文件:

{"name": "emptypage_net_error","value": "Oops,遇到问题了,刷新试试"
},
{"name": "emptypage_no_data","value": "暂时没有任何数据,去别处看看吧"
},

空页面所有代码:

export enum EmptyStatus {fail, // 失败视图nodata, // 没有数据视图none // 正常数据视图
}@Preview
@Component
export struct EmptyWidget{@BuilderParam @Requirechild : () => voidrefresh? : () => void@Link layoutType : EmptyStatusbuild() {Stack({alignContent:Alignment.Center}){if(this.layoutType === EmptyStatus.none){this.child()}else{Column(){if(this.layoutType === EmptyStatus.fail){Image($r("app.media.emptypage_net_error")).width(100)Text($r("app.string.emptypage_net_error"))}else if(this.layoutType === EmptyStatus.nodata){Image($r("app.media.emptypage_no_data")).width(100)Text($r("app.string.emptypage_no_data"))}Button($r("app.string.emptypage_refresh")).margin({top:10}).onClick(()=>{this.pressedReload()})}.justifyContent(FlexAlign.Center).backgroundColor(Color.White).width("100%").height("100%")}}.width("100%").height("100%")}private pressedReload(){if(!LibNetworkStatus.getInstance().isNetworkAvailable()){LibToast.show(Application.getInstance().resourceManager.getStringSync($r("app.string.network_no_connect").id))}else{if(this.refresh){this.refresh()}}}
}

总结:

通过本文,我们不仅学习了如何在鸿蒙OS中实现一个功能完备的空页面组件,还了解了如何通过资源替换和外部函数调用来增强组件的灵活性和实用性。这只是我们鸿蒙开发实战系列的开始,接下来的篇章将深入探讨上拉加载和下拉刷新的实现,敬请期待。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/859714.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙OS创新实践:动态声控话筒开发指南

前言 在鸿蒙OS的生态中,开发者们不断探索和创新,以期为用户带来更丰富的交互体验。最近,我萌生了一个想法:制作一个能够随着声音动态变化的话筒组件。尽管网络上缺乏现成的参考案例,但我决定亲自动手,将这一创意变为现实。本文将深入解析这一开发过程,分享我的实战经验和…

华为云电脑怎么搭建平台,云电脑搭建的设置方法

在全球化的今天,远程连接已经成为了企业和个人不可或缺的一部分。它不仅能够帮助企业实现全球化的业务布局,拓展市场空间,还能够为个人提供更多的发展机会和自由,让我们能够更好地适应快速变化的社会环境。这次给大家介绍云电脑搭建的设置方法?云电脑搭建的设置方法? 设置…

如何解决WDCP控制面板无法登录的问题?

您好,关于您提到的WDCP控制面板无法登录的问题,以下是详细的排查和解决方案:检查服务器状态:首先,确认服务器是否处于正常运行状态。使用SSH或远程桌面工具登录到服务器,查看服务器的启动日志和系统状态。 如果服务器处于只读模式,可能是由于磁盘故障或其他系统问题导致…

《DNK210使用指南 -CanMV版 V1.0》第四十七章 MNIST实验

第四十七章 MNIST实验 1)实验平台:正点原子DNK210开发板 2)章节摘自【正点原子】DNK210使用指南 - CanMV版 V1.0 3)购买链接:https://detail.tmall.com/item.htm?&id=782801398750 4)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/k210/ATK-…

如何高效地创建和管理CMS中的模块与栏目?

在CMS中创建和管理模块及栏目是网站结构规划的重要组成部分,直接影响到用户体验和SEO表现。为了实现高效的管理和组织,以下是几个实用的建议: 一、清晰定义网站架构 在开始创建模块和栏目之前,首先要对网站的整体架构有一个清晰的认识。确定好每个页面的功能定位,比如首页…

安装CMS程序需要注意哪些事项?

安装CMS程序是将下载好的内容管理系统部署到服务器上的关键步骤。为了确保安装过程顺利无误,以下几点是你应该特别注意的: 首先,确保服务器环境符合CMS的要求。不同的CMS对服务器有不同的要求,比如PHP版本、MySQL数据库版本等。通常这些信息可以在CMS的官方文档中找到。如果…

如何处理云服务器IP变更及后续调整?

您好,关于您提到的云服务器IP变更问题,以下是详细的处理步骤和注意事项:确认新IP地址:首先,我们需要确认新的IP地址。根据您的描述,新IP为127.0.0.1(实际情况下,这通常是一个本地回环地址,用于测试或内部通信,而非公网IP)。请确保您收到的是正确的公网IP地址,并在需…

如何在Windows上正确启用PHP的mbstring扩展?

1. 确保 php_mbstring.dll 文件存在 首先,你需要确认你的PHP安装目录中确实包含了php_mbstring.dll文件。通常情况下,这个文件位于PHP安装目录下的ext文件夹中。如果你没有找到这个文件,可能是因为你下载的PHP版本默认没有包含这个扩展。此时,你可以考虑重新下载一个完整的…

六边形图片展示

六边形图片展示 html代码展示<div class="boxF"><div class="boxS"><div class="boxT" :style="{background:url(+ $global.picCodePolice(item.faceImg) +)}"></div></div> </div>相关的css展示…

网站被挂木马,如何紧急处理并加强防护?

您好!当您的网站被挂木马时,需要立即采取一系列措施来清理木马文件,并防止未来的攻击。以下是详细的处理步骤和建议:立即停止传播有害信息:根据国家相关法律规定,网站主办者有责任确保网站不传播有害信息。一旦发现有害信息,必须在24小时内清除所有有害内容,并采取必要…

【GreatSQL优化器-08】statistics和index dives

【GreatSQL优化器-08】statistics和index dives 一、statistics和index_dives介绍 GreatSQL的优化器对于查询条件带有范围的情况,需要根据 mm tree 来估计该范围内大概有多少行,然后以此来计算cost。对于等号条件,给出了两种方法来估计对应行数--Statistics和index dives,前…