HarmonyOS NEXT应用开发案例集

news2025/1/23 3:51:06

概述

随着应用代码的复杂度提升,为了使应用有更好的可维护性和可扩展性,良好的应用架构设计变得尤为重要。本篇文章将介绍一个应用通用架构的设计思路,以减少模块间的耦合、提升团队开发效率,为开发者呈现一个清晰且结构化的开发框架。 本文以“应用通用开发范例App”为例,从分层架构设计和模块化设计的方面介绍应用的架构组成。

分层架构设计:将应用划分为产品定制层、基础特性层和公共能力层,可以降低层间的依赖性,从而提升代码的可维护性。应用通用开发范例App分层架构如下:

common_app_development
|---AppScope
|---common    // 公共能力层,包括公共UI组件、数据管理、通信和工具库等
|---feature   // 基础特性层,包含独立的业务模块,如启动页、登录模块、导航栏等
|---libs      // 三方依赖库
|---product   // 产品定制层,作为不同设备或场景应用入口,例如phone、tv等

模块化设计:应用被分解为多个功能模块,其中每个模块负责执行特定的功能。通过模块化设计提高了代码的可理解性和可复用性,使应用的扩展和维护变得更为简便,同时降低了系统各部分之间的耦合度。应用通用开发范例App模块化结构如下:

common_app_development
|---AppScope
|---common                          // 公共能力层
|   |---utils  
|   |   |---component               // 公共布局,如功能介绍布局
|   |   |---log                     // 日志打印 
|---feature                         // 基础特性层
|   |---addressexchange             // 地址交换动画案例
|   |---akiusepractice              // AKI使用实践
|   |---applicationexception        // 应用异常处理案例
|   |---barchart                    // MpChart图表实现案例
|   |---customtabbar                // 自定义TabBar页签 案例
|   |---eventpropagation            // 阻塞事件冒泡案例
|   |---fitfordarkmode              // 深色模式适配案例
|   |---functionalscenes            // 主页瀑布流实现 
|   |---gbktranscoding              // Axios获取网络数据案例
|   |---handletabs                  // Tab组件实现增删Tab标签案例
|   |---imageviewer                 // 图片预览方案
|   |---marquee                     // 跑马灯案例
|   |---modalwindow                 // 全屏登录页面案例
|   |---nativeprogressnotify        // Native侧进度通知到ArkTS
|   |---nativerawfile               // Native读取Rawfile中文件部分内容
|   |---navigationparametertransfer // Navigation页面跳转对象传递案例
|   |---pageturninganimation        // 翻页动效案例
|   |---pendingitems                // 列表编辑实现案例
|   |---photopickandsave            // 图片选择和下载保存案例
|   |---pulltorefreshnews           // 下拉刷新与上滑加载案例
|   |---secondarylinkage            // 二级联动实现案例
|   |---slidetohideanddisplace      // 滑动页面信息隐藏与组件位移效果案例
|   |---variablewatch               // 多层嵌套类对象监听案例
|   |---verifycode                  // 验证码布局
|   |---vibrateeffect               // 基础特性层-抖动动画及手机振动效果
|   |---customcalendarpickerdialog  // 基础特性层-自定义日历选择器
|   |---navigationbarchange         // 基础特性层-状态栏显隐变化案例
|   |---customview                  // 基础特性层-自定义视图实现Tab效果
|   |---waterripples                // 基础特性层-听歌识曲水波纹特效案例
|   |---citysearch                  // 城市选择案例
|   |---componentstack              // 组件堆叠案例
|   |---dragandexchange             // Grid和List内拖拽交换子组件位置案例
|   |---foldablescreencases         // 折叠屏音乐播放器案例
|   |---imagecomment                // 发布图片评论案例
|   |---mediafullscreen             // 视频全屏切换案例
|   |---swipercomponent             // 多层级轮播图案例
|   |---swipersmoothvariation       // Swiper高度可变化效果案例
|   |---decompressfile              // Worker子线程中解压文件案例
|   |---paintcomponent              // 使用绘制组件实现自定义进度动画案例
|   |---lottieview                  // Lottie
|   |---imagecompression            // 图片压缩方案
|   |---votingcomponent             // 投票组件
|   |---webgetcameraimage           // WebView拉起原生相机案例
|   |---sidebaranimation            // SideBarContainer侧边栏淡入淡出动效实现案例
|   |---imageenableanalyzer         // 图片拖拽AI抠图案例
|   |---indicatorbelowswiper        // swiper指示器导航点位于swiper下方
|   |---bigfilecopy                 // 大文件拷贝案例
|   |---diggingholescreen           // 适配挖孔屏案例
|   |---dragtoswitchpictures        // 左右拖动切换图片效果案例
|   |---listitemoverflow            // 元素超出List区域
|---libs
|---product 
|   |---entry                       // 产品定制层-应用入口

工程框架和实现设计

产品定制层

产品定制层专注于满足不同设备或使用场景(如应用/元服务)的个性化需求,包括UI设计、资源和配置,以及针对特定场景的交互逻辑和功能特性。

产品定制层的功能模块独立运作,同时依赖基础特性层和公共能力层来实现具体功能。

基础特性层

基础特性层位于公共能力层之上,用于存放基础特性集合,例如相对独立的功能UI和业务逻辑实现。该层的每个功能模块都具有高内聚、低耦合、可定制的特点,以支持产品的灵活部署。

基础特性层为上层的产品定制层提供稳健且丰富的基础功能支持,包括UI组件、基础服务等。同时依赖于下层的公共能力层为其提供通用功能和服务。

首页以Navigation组件为基础,通过路由管理实现了页面或者模块间的跳转。

主页瀑布流实现案例

本示例使用WaterFlow+LazyForeEach实现了瀑布流场景。

在这里插入图片描述

全屏登录页面案例

本例介绍各种应用登录页面。在主页面点击跳转到全屏登录页后,显示全屏模态页面,全屏模态页面从下方滑出并覆盖整个屏幕,模态页面内容自定义,此处分为默认一键登录方式和其他登录方式。

在这里插入图片描述

滑动页面信息隐藏与组件位移效果案例

在很多应用中,向上滑动"我的"页面,页面顶部会有如下变化效果:一部分信息逐渐隐藏,另一部分信息逐渐显示,同时一些组件会进行缩放或者位置移动。向下滑动时则相反。

在这里插入图片描述

地址交换动画案例

在出行类订票软件中,一般都有此动画效果,点击交换后,起点和终点互换。

在这里插入图片描述

阻塞事件冒泡案例

事件冒泡是指触发子组件事件的时候,事件会传递到父组件,这样会导致父组件的事件也会触发。

在这里插入图片描述

自定义TabBar页签案例

TabBar在大部分的APP当中都能够使用到,不同的APP可能存在不一样的TabBar样式,Tab组件自带的TabBar属性对于部分效果无法满足,如页签中间显示一圈圆弧外轮廓等, 因此我们需要去自己定义一个TabBar页签来满足开发的需要。

在这里插入图片描述

二级联动实现案例

二级联动是指一个列表(一级列表)的选择结果,来更新另一个列表(二级列表)的选项。

在这里插入图片描述

那么要想成为一名鸿蒙高级开发,以上知识点是必须要掌握的,除此之外,还需要掌握一些鸿蒙应用开发相关的一些技术,需要我们共同去探索。

为了能够让大家跟上互联网时代的技术迭代,在这里我特邀了几位行业大佬整理出一份最新版的鸿蒙学习提升资料,有需要的小伙伴自行领取,限时开源,先到先得~~~~

领取以下高清学习路线原图请点击→《鸿蒙HarmonyOS分布式项目实战》纯血鸿蒙HarmonyOS基础技能学习路线图


在这里插入图片描述

领取以上完整高清学习路线图,请点击→《鸿蒙 (Harmony OS)开发学习手册》小编自己整理的部分学习资料(包含有高清视频、开发文档、电子书籍等)

在这里插入图片描述

以上分享的学习路线都适合哪些人跟着学习?

-应届生/计算机专业
通过学习鸿蒙新兴技术,入行互联网,未来高起点就业。
-0基础转行
提前布局新方向,抓住风口,自我提升,获得更多就业机会。
-技术提升/进阶跳槽
发展瓶颈期,提升职场竞争力,快速掌握鸿蒙技术,享受蓝海红利。

在这里插入图片描述

最后

鸿蒙开发学习是一个系统化的过程,从基础知识的学习到实战技能的锤炼,再到对前沿技术的探索,每一环节都至关重要。希望这份教程资料能帮助您快速入门并在鸿蒙开发之路上步步攀升,成就一番事业。让我们一起乘风破浪,拥抱鸿蒙生态的广阔未来!

如果你觉得这篇内容对你有帮助,我想麻烦大家动动小手给我:点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。

关注我,同时可以期待后续文章ing,不定期分享原创知识。

想要获取更多完整鸿蒙最新VIP学习资料,请点击→《鸿蒙全套学习指南》

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

windows11配置电脑IP

windows11配置电脑IP 选择"开始>设置>“网络&Internet >以太网”。在 "属性"下,编辑IP地址,子网掩码,网关以及DNS。

Qt ini配置文件

ini文件用于保存用户的设置操作,下列以背景颜色设置为例子 暂时默认设置为白色背景 这段代码放置在主窗口的构造函数中,用于初始化读取ini文件 QString color;QSettings *set new QSettings("color.ini",QSettings::IniFormat);set->begi…

《探索虚拟与现实的边界:VR与AR谁更能引领未来?》

引言 在当今数字时代,虚拟现实(VR)和增强现实(AR)技术正以惊人的速度发展,并逐渐渗透到我们的日常生活中。它们正在重新定义人与技术、人与环境之间的关系,同时也为各行各业带来了全新的可能性。…

学术论文GPT的源码解读与二次开发:从ChatPaper到gpt_academic

前言 本文的前两个部分最早是属于此旧文的《学术论文GPT的源码解读与微调:从ChatPaper到七月论文审稿GPT第1版》,但为了每一篇文章各自的内容更好的呈现,于是我今天做了以下三个改动 原来属于mamba第五部分的「Mamba近似工作之线性Transfor…

【YOLO v5 v7 v8 v9小目标改进】RevCol:解决深度学习信息从低层(输入)传递至高层(输出)的过程中,信息会逐层丢失问题

RevCol:解决深度学习信息从低层(输入)传递至高层(输出)的过程中,信息会逐层丢失问题 学习解耦表示可逆列网络(RevCol)子特征1:多级可逆单元子特征2:可逆列架构…

实践航拍小目标检测,基于YOLOv7【tiny/l/x】不同系列参数模型开发构建无人机航拍场景下的小目标检测识别分析系统

关于无人机相关的场景在我们之前的博文也有一些比较早期的实践,感兴趣的话可以自行移步阅读即可: 《deepLabV3Plus实现无人机航拍目标分割识别系统》 《基于目标检测的无人机航拍场景下小目标检测实践》 《助力环保河道水质监测,基于yolov…

LLM | GPT-NEOX论文详解

GPT-NEOX使用旋转位置编码。模型权重使用float16表示。最大序列长度为2048。 论文题目:2022.04.14_GPT-NeoX-20B: An Open-Source Autoregressive Language Model 论文地址:2204.06745.pdf (arxiv.org) 论文代码:EleutherAI/gpt-neox: An imp…

初次安装WordPress后如何进行网站设置(主题安装、插件安装、网站美化、网站备份、安全性提升、伪静态、多域名设置等)WordPress网站常见问题设置指南

专栏地址: WordPress建站主题美化系列教程https://blog.csdn.net/seeker1994/category_12184577.html 一文搞懂WordPress是什么?为什么用它建站?怎么安装与部署? 使用腾讯云快速搭建WordPress网站流程详解 ...... 1. 前言 专栏上几篇文章介绍了小白零基础如何使用腾讯…

Golang的Channel源码阅读、工作流程分析。

Channel整体结构 源码位置 位于src/runtime下的chan.go中。 Channel整体结构图 图源:https://i6448038.github.io/2019/04/11/go-channel/ Channel结构体 type hchan struct {qcount uint // total data in the queuedataqsiz uint // si…

09 |「ViewPager」

前言 实践是最好的学习方式,技术也如此。 文章目录 前言一、ViewPager 简介二、ViewPager 与 Fragment 结合1、ViewPager Fragment 实现底部页面导航2、ViewPager Fragment BottomNavigationView 实现底部页面导航3、ViewPager Fragment TabLayout 实现底部页面…

分类算法(Classification algorithms)

逻辑回归(logical regression): 逻辑回归这个名字听上去好像应该是回归算法的,但其实这个名字只是在历史上取名有点区别,但实际上它是一个完全属于是分类算法的。 我们为什么要学习它呢?在用我们的线性回归时会遇到一…

WPF 自定义彩色控制台功能

文章目录 前言环境流内容一个简单的控制台 自动添加数据无法添加数据模板代码添加参数简单的案例添加和清空功能完善代码 额外功能添加移动到底部添加样式 总结 前言 在WPF中添加模拟控制台,可以试试的看到最新的日志信息。但是普通的TextBlock只是纯粹的黑色&…

【C++】十大排序算法之 堆排序 计数排序

本次介绍内容参考自:十大经典排序算法(C实现) - fengMisaka - 博客园 (cnblogs.com) 排序算法是《数据结构与算法》中最基本的算法之一。 十种常见排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序…

腾轩科技传媒讲解律师事务所创建百度词条的流程

在当今信息爆炸的时代,律师事务所需要在互联网上留下自己的痕迹,为了提升品牌知名度和业务曝光度,很多律师事务所选择在百度百科创建词条。但是,创建词条并不是一件简单的事情,需要注意许多细节和规定。本文腾轩科技传…

美国站群服务器使用技巧与注意事项

美国站群服务器使用技巧与注意事项有哪些?RAKsmart小编为您整理发布美国站群服务器使用技巧与注意事项,希望对您有帮助。 美国站群服务器的使用技巧主要包括远程管理、灵活配置和备份还原,具体如下: 1. **远程管理**:用户可以通过…

SpringBoot集成ElasticSearch(ES)

ElasticSearch环境搭建 采用docker-compose搭建,具体配置如下: version: 3# 网桥es -> 方便相互通讯 networks:es:services:elasticsearch:image: registry.cn-hangzhou.aliyuncs.com/zhengqing/elasticsearch:7.14.1 # 原镜像elasticsearch:7.…

Python】深度学习基础知识——随机梯度下降详解和示例

本文通过原理和示例对随机梯度下降进行了详解,并和梯度下降进行了对比分析,简单易懂。 随机梯度下降原理示例 动态学习率动态学习率示例 总结 随机梯度下降 原理 示例 import torch import torch.nn as nn import matplotlib.pyplot as pltdef train_2…

Vue.js大师: 构建动态Web应用的全面指南

VUE ECMAScript介绍什么是ECMAScriptECMAScript 和 JavaScript 的关系ECMAScript 6 简介 ES6新特性let基本使用const不定参数箭头函数对象简写模块化导出导入a.jsb.jsmain.js Vue简介MVVM 模式的实现者——双向数据绑定模式 Vue环境搭建在页面引入vue的js文件即可。创建div元素…

简单两步,从补税到退税

大家好,我是拭心。 最近到了一年一度的个人所得税年度申报时期,有人可以退好几千,而有的人则需要补上万元,人类的悲喜这一刻并不相通。 我申报的时候,提示我需要补税一万多,心有不甘但差一点就认了&#xf…

瑞芯微第二代8nm高性能AIOT平台 RK3576 详细介绍

RK3576处理器 RK3576瑞芯微第二代8nm高性能AIOT平台,它集成了独立的6TOPS(Tera Operations Per Second,每秒万亿次操作)NPU(神经网络处理单元),用于处理人工智能相关的任务。此外,R…