HarmonyOS NEXT应用开发案例集

概述

随着应用代码的复杂度提升,为了使应用有更好的可维护性和可扩展性,良好的应用架构设计变得尤为重要。本篇文章将介绍一个应用通用架构的设计思路,以减少模块间的耦合、提升团队开发效率,为开发者呈现一个清晰且结构化的开发框架。 本文以“应用通用开发范例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学习资料,请点击→《鸿蒙全套学习指南》

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Tauri】(4):整合Tauri和actix-web做本地大模型应用开发,可以实现session 登陆接口,完成页面展示,进入聊天界面

1,视频地址 https://www.bilibili.com/video/BV1GJ4m1Y7Aj/ 【Tauri】(4):整合Tauri和actix-web做本地大模型应用开发,可以实现session 登陆接口,完成页面展示,进入聊天界面 使用国内代理进行加…

【HTML】HTML基础7.3(自定义列表)

目录 标签 效果 代码 注意 标签 <dl> <dt>自定义标题</dt><dd>内容1</dd><dd>内容2</dd><dd>内容3</dd> 。。。。。。 </dl> 效果 代码 <dl><dt>蜘蛛侠系列</dt><dd>蜘蛛侠1</dd…

PyCharm Community Edition 2023.3.3,UI界面设置成旧版

File->Settings->Appearance & Behavior->New UI->Enable new UI(取消勾选)->重启PyCharm 旧版UI: 新版UI&#xff1a;

基于决策树实现葡萄酒分类

基于决策树实现葡萄酒分类 将葡萄酒数据集拆分成训练集和测试集&#xff0c;搭建tree_1和tree_2两个决策树模型&#xff0c;tree_1使用信息增益作为特征选择指标&#xff0c;B树使用基尼指数作为特征选择指标&#xff0c;各自对训练集进行训练&#xff0c;然后分别对训练集和测…

【ETCD】简介安装常用操作---图文并茂详细讲解

目录 一 简介 1.1 etcd是什么 1.2. 特点 1.3. 使用场景 1.4 关键字 1.5 工作原理 二 安装 2.1 etcd安装前介绍 2.2 安装 2.3 启动 2.4 创建一个etcd服务 三 常用操作 一 简介 1.1 etcd是什么 etcd是CoreOS团队于2013年6月发起的开源项目&#xff0c;它的目标是构建…

git 如何将多个提交点合并为一个提交点 commit

文章目录 核心命令详细使用模式总结示例 核心命令 git merge branch2 是将分支branch2的提交点合并到本地当前分支。 而在执行这条命令的时候&#xff0c;加一个选项--squash就表示在合并的时候将多个提交点合并为一个提交点。 git merge --squash branch2 先看squash单词的意…

探索c++——了解c++的魅力

前言&#xff1a;c是一门既面向对象又面向过程的语言。 不同于java纯粹的面向对象和c纯粹的面向过程。 造成c该特性的原因是c是由本贾尼大佬在c的基础上增添语法创建出来的一门新的语言。 它既兼容了c&#xff0c; 身具面向过程的特性。 又有本身的面向对象的特性。 面向对象和…

SpringBoot集成ElasticSearch(ES)

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

Unity 整体界面淡入淡出效果

在Unity中&#xff0c;如果我们要实现控制多个组件同时淡出&#xff0c;同时淡入的效果&#xff0c;可以使用DOTween插件实现。 如图&#xff0c;一个页面中带有背景&#xff0c;一张图片&#xff0c;一个文本&#xff0c;一个滑动条。 要实现以上界面的整体淡入淡出&#xff…

机器学习-启航

文章目录 原理分析机器学习的两种典型任务机器学习分类总结数据机器学习分类解读简单复杂 原理分析 马克思主义哲学-规律篇 规律客观存在&#xff0c;万事万物皆有规律。 机器学习则是多维角度拆解分析复杂事实数据&#xff0c;发现复杂事实背后的规律&#xff0c;然后将规律用…

C#,回文分割问题(Palindrome Partitioning Problem)算法与源代码

1 回文串 “回文串”是一个正读和反读都一样的字符串&#xff0c;初始化标志flagtrue&#xff0c;比如“level”或者“noon”等等就是回文串。 2 回文分割问题 给定一个字符串&#xff0c;如果该字符串的每个子字符串都是回文的&#xff0c;那么该字符串的分区就是回文分区。…

VS code下载与使用方法(包含远程调试)

Visual Studio Code(简称 VSCode)是由微软开发的一款免费、开源、跨平台的现代化轻量级代码编辑器。它具有丰富的功能和强大的扩展性,适用于多种编程语言和开发环境。以下是 VSCode 的一些主要特点和功能: 跨平台支持: 可在 Windows、macOS 和 Linux 等多种操作系…

基于ACM32 MCU的两轮车充电桩方案,打造高效安全的电池管理

随着城市化进程的加快、人们生活水平的提高和节能环保理念的普及&#xff0c;越来越多的人选择了电动车作为代步工具&#xff0c;而两轮电动车的出行半径较短&#xff0c;需要频繁充电&#xff0c;因此在城市中设置两轮车充电桩就非常有必要了。城市中的充电桩不仅能解决两轮车…

Flink:Temporal Table 的两种实现方式 Temporal Table DDL 和 Temporal Table Function

博主历时三年精心创作的《大数据平台架构与原型实现&#xff1a;数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行&#xff0c;点击《重磅推荐&#xff1a;建大数据平台太难了&#xff01;给我发个工程原型吧&#xff01;》了解图书详情&#xff0c;…

近地面无人机植被定量遥感与生理参数反演技术应用

李老师&#xff08;副教授&#xff09;&#xff0c;长期从事无人机近地面植被遥感&#xff0c;植被生理参数&#xff0c;多角度遥感&#xff0c;RGB/多光谱/高光谱数据处理&#xff0c;LiDAR点云处理等领域研究工作&#xff0c;具有资深的技术底蕴和专业背景。 专题一、近十年…

java 获取项目内的资源/配置文件

【getResourceAsStream】是java中用于获取项目内资源的常用方法&#xff0c;能够返回一个数据流&#xff0c;从而允许我们读取指定路径下的资源文件。这个方法可以用来读取各种类型的资源文件&#xff0c;包括但不限于文本文件、图像文件、配置文件等。 要使用getResourceAsStr…

InfluxDB SHOW SERIES语句按照什么顺序返回?

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作)&#xff0c;由 李兆龙 确认&#xff0c;转载请注明版权。 文章目录 引言样例SHOW SERIES比较原理结论结束语 引言 influxdb的计算引擎为了做到自底而上的…

【Web安全靶场】upload-labs-master 1-21

upload-labs-master 其他靶场见专栏… 文章目录 upload-labs-masterPass-01-js前端校验Pass-02-MIME校验Pass-03-其他后缀绕过黑名单Pass-04-.hatccess绕过Pass-05-点空格点代码逻辑绕过Pass-06-大小写绕过Pass-07-空格绕过Pass-08-点号绕过Pass-09-::$DATA绕过Pass-10-点空格…

三、代码结构(不定时更新)

一、装饰器 Entry&#xff1a;标记当前组件是入口组件 Component&#xff1a;标记自定义组件 State&#xff1a;标记该变量是状态变量&#xff0c;值变化时会触发UI刷新 二、自定义组件 // 可复用的UI单元 struct Index {} 三、UI描述 // 其内部以声明式方式描述UI结构 bu…

fatal: unable to access ‘***‘: OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 0解决方案

本文收录于《AI绘画从入门到精通》专栏&#xff0c;专栏总目录&#xff1a;点这里。 大家好&#xff0c;我是水滴~~ 本文主要介绍在从 GitHub 上克隆 stable-diffusion-webui 项目时出现的 fatal: unable to access https://github.com/AUTOMATIC1111/stable-diffusion-webui.…