纯血鸿蒙APP实战开发——页面间共享组件实例的案例
介绍
本示例提供组件实例在页面间共享的解决方案:通过Stack容器,下层放地图组件,上层放Navigation组件来管理页面,页面可以共享下层的地图组件,页面中需要显示地图的区域设置为透明,并参考触摸交互控制,设置事件透传及响应区域。
效果图预览
使用说明
页面间共享地图组件的场景:
- 使用地图组件替换代码中模拟的地图组件。
- 添加新页面,需要预留地图组件的显示区域,参考首页代码的实现。
其他组件实例共享的场景:
- 参考实现思路即可。
实现思路
场景:组件实例页面间共享
本示例实现模拟的地图组件实例在两个页面间共享。
- 通过Stack容器,下层放地图组件,上层放Navigation组件管理两个页面,且需要设置Navigation组件的事件透传到地图组件,源码参考。
build() {Stack({alignContent: Alignment.Bottom}) {// 地图组件放在底层,navigation组件放在上层,navigation中的页面需要显示地图组件的位置处设置透明和事件透传MapComponent()// 应用主页用NavDestination承载,Navigation为空页面直接跳转到MainPage主页面Navigation(this.pageStackForComponentSharedPages) {}.onAppear(()=>{this.pageStackForComponentSharedPages.pushPathByName("MainPage", null, false)}).hideTitleBar(true)// navigation组件设置事件透传给兄弟组件.hitTestBehavior(HitTestMode.Transparent).navDestination(this.pageMap)}.width('100%').height('100%')}
- Navigation中的页面需要显示地图的区域设置透明,由于本示例主页面是一个Scroll,所以选择放一个空的Column容器组件占位,默认是透明源码参考。
// 页面用于显示地图的区域,放一个空的容器组件,背景默认透明,来显示下层的地图组件(该组件父组件也需要设置透明)Column() {}.width('100%').height(this.transParentInitHeight)
- 为避免上层内容区域(非透明区域)的事件也影响下层地图组件,需要分别设置地图组件和内容区域对事件的响应范围,两组响应区域不重叠,随内容区域的变化而变化。
// 地图组件的手势事件响应区域设置.responseRegion({x: 0,y: 0,width: '100%',height: this.mapResponseRegionHeight})
// 主页面的手势事件响应区域设置.responseRegion({x: 0,y: this.mapResponseRegionHeight,width: '100%',height: this.pageHeight - this.mapResponseRegionHeight})
- 主页面Scroll滑动过程中Column组件(透明,用于显示下层地图组件)逐渐划出页面,地图的显示区域随之变化,因此需要滑动过程中更新地图的事件响应区域源码参考。
.onScrollFrameBegin((offset) => {this.scrollCurOffset = this.scroller.currentOffset().yOffset;this.mapResponseRegionHeight =this.transParentInitHeight - this.scrollCurOffset > 0 ? this.transParentInitHeight - this.scrollCurOffset:0;return {offsetRemain : offset}})
高性能知识点
- ForEach循环渲染会一次性加载所有组件,会导致页面启动时间长,影响用户体验,长列表场景推荐使用数据懒加载,参考优化指导。
- onActionUpdate、onScrollFrameBegin、onAreaChange,这些函数是系统高频回调函数,避免在函数中进行冗余或耗时操作。例如应该减少或避免在函数打印日志,会有较大的性能损耗。
工程结构&模块类型
componentinstancesharedinpages // har类型
|---src/main/ets/pages
| |---ComponentSharedInPages.ets // 视图层-壳页面
| |---MainPage.ets // 视图层-主页面
| |---TakeTaxiDetailPage.ets // 视图层-打车页面
|---src/main/ets/Components
| |---MapComponent.ets // 视图层-地图组件
|---src/main/ets/model
| |---CommonConstants.ets // 模型层-通用常量
模块依赖
本实例依赖common模块来实现日志的打印、资源
的调用,依赖routermodule模块来实现路由注册管理。
参考资料
Stack参考文档
Navigation参考文档
触摸交互控制参考文档
鸿蒙全栈开发全新学习指南
也为了积极培养鸿蒙生态人才,让大家都能学习到鸿蒙开发最新的技术,针对一些在职人员、0基础小白、应届生/计算机专业、鸿蒙爱好者等人群,整理了一套纯血版鸿蒙(HarmonyOS Next)全栈开发技术的学习路线【包含了大APP实战项目开发】。
本路线共分为四个阶段:
第一阶段:鸿蒙初中级开发必备技能
第二阶段:鸿蒙南北双向高工技能基础:gitee.com/MNxiaona/733GH
第三阶段:应用开发中高级就业技术
第四阶段:全网首发-工业级南向设备开发就业技术:https://gitee.com/MNxiaona/733GH
《鸿蒙 (Harmony OS)开发学习手册》(共计892页)
如何快速入门?
1.基本概念
2.构建第一个ArkTS应用
3.……
开发基础知识:gitee.com/MNxiaona/733GH
1.应用基础知识
2.配置文件
3.应用数据管理
4.应用安全管理
5.应用隐私保护
6.三方应用调用管控机制
7.资源分类与访问
8.学习ArkTS语言
9.……
基于ArkTS 开发
1.Ability开发
2.UI开发
3.公共事件与通知
4.窗口管理
5.媒体
6.安全
7.网络与链接
8.电话服务
9.数据管理
10.后台任务(Background Task)管理
11.设备管理
12.设备使用信息统计
13.DFX
14.国际化开发
15.折叠屏系列
16.……
鸿蒙开发面试真题(含参考答案):gitee.com/MNxiaona/733GH
鸿蒙入门教学视频:
美团APP实战开发教学:gitee.com/MNxiaona/733GH
写在最后
- 如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:
- 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。
- 关注小编,同时可以期待后续文章ing🚀,不定期分享原创知识。
- 想要获取更多完整鸿蒙最新学习资源,请移步前往小编:
gitee.com/MNxiaona/733GH
相关文章:

纯血鸿蒙APP实战开发——页面间共享组件实例的案例
介绍 本示例提供组件实例在页面间共享的解决方案:通过Stack容器,下层放地图组件,上层放Navigation组件来管理页面,页面可以共享下层的地图组件,页面中需要显示地图的区域设置为透明,并参考触摸交互控制&am…...

华为机考入门python3--(22)牛客22- 汽水瓶
分类:数字 知识点: 整除符号// 5//3 1 取余符号% 5%3 2 题目来自【牛客】 import sysdef calc_soda_bottles(n):if n 0: # 结束输入,不进行处理returnelse:# 循环进行汽水换算total_drunk 0 # 记录总共喝了多少瓶汽水while…...

Xilinx 千兆以太网TEMAC IP核简介
Xilinx 公司提供了千兆以太网MAC控制器的可参数化LogiCORET™IP解决方案,通过这个IPCore可以实现FPGA与外部网络物理层芯片的互连。基于Xilinx FPGA 的以太网设计,大大降低了工程的设计复杂度,缩短了开发周期,加快了产品的面市速度…...

激光测径仪在胶管生产中扮演着什么角色?
关键词:激光测径仪,胶管,胶管测径仪,在线测径仪 胶管生产的基本工序为混炼胶加工、帘布及帆布加工、胶管成型、硫化等。不同结构及不同骨架的胶管,其骨架层的加工方法及胶管成型设备各异。 全胶胶管因不含骨架层,只需使用压出机压出胶管即可&…...

数据结构与算法===递归
文章目录 定义适用场景爬楼梯代码实现 小结 定义 递归(Recursion)是指函数的自身调用。 这个算法演变为了程序员之间的梗,所表达的意思近似于“套娃”,表示不断重复引用别人的话从而产生循环。 适用场景 这个应该很多的,像一些树的遍历&am…...
面试官:BIO、NIO 和 AIO 有什么区别?
BIO(Blocking I/O)、NIO(Non-blocking I/O)和AIO(Asynchronous I/O)是Java中用于处理I/O操作的三种不同的编程模型. BIO适用于连接数较少的情况,NIO适用于连接数较多但连接活跃度不高的情况&…...
HTML:元素属性详解及代码示例
引言 HTML(HyperText Markup Language)是构建网页和网页应用的基石。通过使用各种元素和属性,我们可以创建结构化、样式化并具有交互性的内容。本文将深入探讨HTML元素的属性,并提供实用的代码示例。 HTML元素属性概述 HTML元素…...

【Flask 系统教程 5】视图进阶
类视图 在 Flask 中,除了使用函数视图外,你还可以使用类视图来处理请求。类视图提供了一种更为结构化和面向对象的方式来编写视图函数,使得代码组织更清晰,并且提供了更多的灵活性和可扩展性。 创建类视图 要创建一个类视图&am…...

代码训练LeetCode(17)存在重复元素
代码训练(17)LeetCode之存在重复元素 Author: Once Day Date: 2024年5月7日 漫漫长路,才刚刚开始… 全系列文章可参考专栏: 十年代码训练_Once-Day的博客-CSDN博客 参考文章: 219. 存在重复元素 II - 力扣(LeetCode)力扣 (LeetCode) 全球…...
运营模型—归因分析(Attribution Analysis)
运营模型—归因分析(Attribution Analysis) 随着互联网技术和业务的发展,广告投放相关的业务也随之兴起。那么广告投放的效果评估也就随之而来。广告的投放一般都是收费模式,所以选中的渠道商的好坏直接和自己的利益挂钩。于是,「归因分析」便最早应用在了广告投放行业。(…...

我必须要吹一波MATLAB 2024a,太牛逼了!|福利:附安装教程及下载地址
最近逛MATLAB官网,发现MATLAB 2024a版本已经Pre-release了,翻了下release note,不得不感叹,实在是太强了! 这次重点更新了四个工具箱: Computer Vision Toolbox Deep Learning Toolbox Instrument Contro…...
XMLHttpRequest与Axios详解
XMLHttpRequest发送请求 在JavaScript中,使用XMLHttpRequest()发送多个参数通常涉及到设置HTTP请求的Content-Type头部,并且将参数作为请求体的一部分发送。以下是一个示例,展示了如何发送包含多个参数的POST请求: var xhr new X…...

【区块链】智能合约简介
智能合约起源 智能合约这个术语至少可以追溯到1995年,是由多产的跨领域法律学者尼克萨博(NickSzabo)提出来的。他在发表在自己的网站的几篇文章中提到了智能合约的理念。他的定义如下:“一个智能合约是一套以数字形式定义的承诺&a…...
上海市计算机学会竞赛平台2024年1月月赛丙组成绩等第
题目描述 给定一个在 00 到 100100 之间的整数 𝑎a,请将它转成等第,规则如下: 9090 或以上为 A8080 或以上为 B7070 或以上为 C6060 或以上为 D5959 或以下为 F 输入格式 单个数字表示 𝑎a 输出格式 单个字符表示…...
【算法入门教育赛2】C.曼哈顿种类 C++题解与代码
比赛地址:https://www.starrycoding.com/contest/6 题目描述 牢 e e e知道在武汉有 n n n家自助店,第 i i i个自助店用坐标 ( x i , y i ) (x_i, y_i) (xi,yi)表示,因为武汉的街道都是互相垂直的,现在他想知道所有自助店之间…...
Electron使用 SQLite
在客户端开发中,无论是 PC 端,还是手机端,为了能够访问离线数据,数据经常需要保存到本地,IndexDB 可以用于存储本地数据,IndexDB 是一个对象存储,数据是以 key:value 的形式进行存储和访问的&am…...

怎样的跨网软件,可以实现网间数据的安全收发?
网络隔离已是较为常见的网络安全保护措施,比如防火墙、网闸、VLAN,云桌面虚拟环境等方面进行隔离。像一些科技研发型企业,不仅仅是内外网隔离,甚至还划分办公网、研发网、测试网、生产网等,防止研发资料、设计资料等敏…...

Sora惊艳亮相:AI技术掀起创作革命,影视产业迎来新风貌!
Sora平台近期发布了名为"Sora首次印象"的更新,为用户带来了令人瞩目的变化。该更新不仅展示了Sora平台的发展方向,还介绍了其在电影制作、广告宣传等领域的潜在应用。 同时,Sora的首席执行官Sam Altman与好莱坞影视工作室进行了会…...

Mac电脑安装打开APP显示问题已损坏 问题解决
当MAC电脑安装完软件打开时,显示文件已损坏,无法打开。搜了很多教程终于找到解决方案,记录下方便以后再用。 我的mac电脑是intel芯片的,如果你遇到这个问题,可以参考我的这个方案。 1.首先当打开软件后出现 “xx软件已…...

AI 数据观 | TapData Cloud + MongoDB Atlas:大模型与 RAG 技术有机结合,落地实时工单处理智能化解决方案
本篇为「AI 数据观」系列文章第二弹,在这里,我们将进一步探讨 AI 行业的数据价值。以 RAG 的智能工单应用场景为例,共同探索如何使用 Tapdata Cloud MongoDB Atlas 实现具备实时更新能力的向量数据库,为企业工单处理的智能化和自…...

5.3 Spring Boot整合JPA
本文详细介绍了如何在Spring Boot项目中整合Spring JPA,实现对数据库的高效操作。首先,创建Spring Boot项目并添加必要的依赖,如Druid数据源。接着,配置数据源属性,创建实体类Comment和Article,并使用JPA注…...

WINUI——Magewell视频捕捉开发手记
背景 因需要融合视频,并加载患者CT中提取出的气管镜与病变,以便能实时查看气管镜是否在正确位置。 开发环境 硬件:Magewell的USB Capture HDMI Gen 2 IDE:VS2022 FrameWork: .Net6 WINUI Package: MVVMToolKit NLog Ma…...
Go 语言中的 make 函数详解
Go 语言中的 make 函数详解 make 是 Go 语言中的一个内置函数,用于初始化切片(slice)、映射(map)和通道(channel)这些引用类型。这些类型必须在使用前通过 make 初始化&#x…...
B站的视频怎么下载下来——Best Video下载器
B站(哔哩哔哩)作为国内最受欢迎的视频平台之一,聚集了无数优质内容:动漫番剧、游戏实况、学习课程、纪录片、Vlog、鬼畜剪辑……总有那么些视频让人想反复观看、离线观看,甚至剪辑创作。 但你是否遇到过这样的烦恼&am…...
九、【ESP32开发全栈指南: UDP通信服务端】
一、TCP与UDP核心差异 特性TCPUDP连接方式面向连接 (需三次握手)无连接可靠性可靠传输 (重传/排序/校验)尽力交付 (不保证可靠性)实时性延迟较高低延迟,实时性强传输效率协议开销大头部开销小 (仅8字节)连接类型点对点支持广播/多播资源占用高 (需维护连接状态)极低…...
.net webapi http参数自定义绑定模型
.NET Web API 中 HTTP 参数自定义绑定模型的深度解析 在 .NET Web API 开发里,常规的参数绑定往往能满足大部分需求。不过,当遇到一些特殊情况时,就需要自定义将 HTTP 参数绑定到 action 特定模型参数了。接下来,我们就深入探讨如…...
C++2025.6.7 C++五级考题
城市商业街主干道是一条笔直的道路,商业街里有 n 家店铺,现给定 n 个店铺的位置,请在这条道路上找到一个中心点,使得所有店铺到这个中心点的距离之和最小,并输出这个最小值。 #include <bits/stdc.h> using nam…...

中医的十问歌和脉象分类
中医核心理论框架如下 诊断技术如下 本文主要介绍问诊和切诊。 十问歌的“十”是虚指,实际包含12个核心问题,脉象28种中常见仅10余种,重点解释脉诊的物理本质(血流动力学触觉感知) 以下是中医十问歌的完整内容及脉…...
《视觉SLAM十四讲》自用笔记 第二讲:SLAM系统概述
在rm队伍里作为算法组梯队队员度过了一个赛季,为了促进和负责其他工作的算法组成员的交流,我决定在接下来的半个学期里(可能更快)读完这本书,并将其中的部分理论应用于我自制的雷达导航小车上。 以下为第二讲的部分笔记…...

SDC命令详解:使用set_min_capacitance命令进行约束
相关阅读 SDC命令详解https://blog.csdn.net/weixin_45791458/category_12931432.html?spm1001.2014.3001.5482 目录 指定最小需驱动电容值 指定对象列表/集合 简单使用 写在最后 set_min_capacitance命令用于设置输入端口的最小需驱动电容(设置了输入端口的min_c…...