HarmonyOS 应用开发-页面间共享组件实例的案例

563 篇文章 1 订阅
553 篇文章 2 订阅

介绍

本示例提供组件实例在页面间共享的解决方案:通过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循环渲染会一次性加载所有组件,会导致页面启动时间长,影响用户体验,长列表场景推荐使用数据懒加载,参考优化指导
  • onActionUpdateonScrollFrameBeginonAreaChange,这些函数是系统高频回调函数,避免在函数中进行冗余或耗时操作。例如应该减少或避免在函数打印日志,会有较大的性能损耗。

工程结构&模块类型

componentinstancesharedinpages                  // har类型
|---src/main/ets/pages
|   |---ComponentSharedInPages.ets              // 视图层-壳页面 
|   |---MainPage.ets                            // 视图层-主页面
|   |---TakeTaxiDetailPage.ets                  // 视图层-打车页面
|---src/main/ets/Components
|   |---MapComponent.ets                        // 视图层-地图组件 
|---src/main/ets/model
|   |---CommonConstants.ets                     // 模型层-通用常量 

为了能让大家更好的学习鸿蒙(HarmonyOS NEXT)开发技术,这边特意整理了《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05

《鸿蒙开发学习手册》:

如何快速入门:https://qr21.cn/FV7h05

  1. 基本概念
  2. 构建第一个ArkTS应用
  3. ……

开发基础知识:https://qr21.cn/FV7h05

  1. 应用基础知识
  2. 配置文件
  3. 应用数据管理
  4. 应用安全管理
  5. 应用隐私保护
  6. 三方应用调用管控机制
  7. 资源分类与访问
  8. 学习ArkTS语言
  9. ……

基于ArkTS 开发:https://qr21.cn/FV7h05

  1. Ability开发
  2. UI开发
  3. 公共事件与通知
  4. 窗口管理
  5. 媒体
  6. 安全
  7. 网络与链接
  8. 电话服务
  9. 数据管理
  10. 后台任务(Background Task)管理
  11. 设备管理
  12. 设备使用信息统计
  13. DFX
  14. 国际化开发
  15. 折叠屏系列
  16. ……

鸿蒙开发面试真题(含参考答案):https://qr18.cn/F781PH

鸿蒙开发面试大盘集篇(共计319页):https://qr18.cn/F781PH

1.项目开发必备面试题
2.性能优化方向
3.架构方向
4.鸿蒙开发系统底层方向
5.鸿蒙音视频开发方向
6.鸿蒙车载开发方向
7.鸿蒙南向开发方向

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
学前必读:HarmonyOS学习资源主题分享 学前必读:OpenHarmony-联盟生态资料合集 常见问题(JAVA、JS开发模拟器、模拟器运行) 1.常见问题之HarmonyOS元服务的设计与开发解析 2.常见问题之Java开发 3.常见问题之JS开发 4.常见问题之模拟器登录 5.常见问题之模拟器运行 6.常见问题之如何使用JsJava开发HarmonyOS UI 7.常见问题之应用配置 8.常见问题之预览器运行 技术解读(框架、场景案例解读) 1.技术解读之HarmonyOS轻量JS开发框架与W3C标准差异分析 2.技术解读之HarmonyOS驱动加载过程分析 3.技术解读之HarmonyOS组件库使用实践 4.技术解读之华为架构师解读:HarmonyOS低时延高可靠消息传输原理 5.技术解读之解密HarmonyOS UI框架 6.技术解读之如何从OS框架层面实现应用服务功能解耦 生态案例(游戏、农业、教育) 1.生态案例:【开发者说】重塑经典,如何在HarmonyOS手机上还原贪吃蛇游戏 2.生态案例:HarmonyOLabo涂鸦鸿蒙亲子版 3.生态案例:HarmonyOS分镜头APP案例 4.生态案例:HarmonyOS时光序历史学习案例 5.生态案例:HarmonyOS先行者说 宝宝巴士携手HarmonyOS共同打造儿童教育交互新体验 6.生态案例:HarmonyOS智能农场物联网连接实践 7.生态案例:分布式开发样例,带你玩转多设备pptx 8.生态案例华为分布式日历应用开发实践 HarmonyOS概述(官网资料解读) 1.HarmonyOS概述:技术特性 2.HarmonyOS概述:开发工具与平台 3.HarmonyOS概述:系统安全 4.HarmonyOS概述:系统定义 5.HarmonyOS概述:下载与安装软件 6.HarmonyOS概述:应用开发基础知识 7.HarmonyOS概述:最全HarmonyOS文档和社区资源使用技巧 HarmonyOS基础入门必看视频课 【视频合集】入门到进阶视频学习资料合集30+ 【直播回顾】HarmonyOS应用开发系列课基础篇_从零开始开发HarmonyOS应用 【直播回顾】HarmonyOS应用开发系列课基础篇_如何让HarmonyOS应用调试速度翻倍 【直播回顾】HarmonyOS应用开发系列课基础篇_HarmonyOS分布式应用开发实践 运行第一个HarmonyOS Demo应用 N个Codelab案例轻松入门 1.【Codelab】HarmonyOS基于图像模块实现图库图片的四种常见操作 2.【CodeLab】手把手教你创建第一个手机“Hello World” 3.【Codelab】如此简单!一文带你学会15个HarmonyOS JS组件 4.【Codelab】懒人“看”书新法—鸿蒙语音播报,到底如何实现? 5.【Codelab】基于AI通用文字识别的图像搜索,这波操作亮了 6.【Codelab】开发样例概览

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值