qidao123.com技术社区-IT企服评测·应用市场

标题: 鸿蒙HarmonyOS 5.0开辟实战:页面间共享组件实例的实现案例 [打印本页]

作者: 立山    时间: 3 天前
标题: 鸿蒙HarmonyOS 5.0开辟实战:页面间共享组件实例的实现案例
 往期鸿蒙5.0全套实战文章必看:(文中附带鸿蒙5.0全栈学习资料)



页面间共享组件实例的案例

介绍

本示例提供组件实例在页面间共享的解决方案:通过Stack容器,下层放地图组件,上层放Navigation组件来管理页面,页面可以共享下层的地图组件,页面中需要显示地图的地区设置为透明,并参考触摸交互控制,设置事故透传及相应地区。
结果图预览



使用阐明
页面间共享地图组件的场景:

其他组件实例共享的场景:

实现思路

场景:组件实例页面间共享

本示例实现模拟的地图组件实例在两个页面间共享。

  1.   build() {
  2.     Stack({alignContent: Alignment.Bottom}) {
  3.       // 地图组件放在底层,navigation组件放在上层,navigation中的页面需要显示地图组件的位置处设置透明和事件透传
  4.       MapComponent()
  5.       // 应用主页用NavDestination承载,Navigation为空页面直接跳转到MainPage主页面
  6.       Navigation(this.pageStackForComponentSharedPages) {
  7.       }
  8.       .onAppear(()=>{
  9.         this.pageStackForComponentSharedPages.pushPathByName("MainPage", null, false)
  10.       })
  11.       .hideTitleBar(true)
  12.       // navigation组件设置事件透传给兄弟组件
  13.       .hitTestBehavior(HitTestMode.Transparent)
  14.       .navDestination(this.pageMap)
  15.     }
  16.     .width('100%')
  17.     .height('100%')
  18.   }
复制代码

  1. // 页面用于显示地图的区域,放一个空的容器组件,背景默认透明,来显示下层的地图组件(该组件父组件也需要设置透明)
  2. Column() {
  3. }
  4. .width('100%')
  5. .height(this.transParentInitHeight)
复制代码

  1.   // 地图组件的手势事件响应区域设置
  2.   .responseRegion({
  3.     x: 0,
  4.     y: 0,
  5.     width: '100%',
  6.     height: this.mapResponseRegionHeight
  7.   })
复制代码
  1.   // 主页面的手势事件响应区域设置
  2.   .responseRegion({
  3.     x: 0,
  4.     y: this.mapResponseRegionHeight,
  5.     width: '100%',
  6.     height: this.pageHeight - this.mapResponseRegionHeight
  7.   })
复制代码

  1.   .onScrollFrameBegin((offset) => {
  2.     this.scrollCurOffset = this.scroller.currentOffset().yOffset;
  3.     this.mapResponseRegionHeight =
  4.       this.transParentInitHeight - this.scrollCurOffset > 0 ? this.transParentInitHeight - this.scrollCurOffset:0;
  5.     return {offsetRemain : offset}
  6.   })
复制代码
高性能知识点


工程结构&模块类型

  1. componentinstancesharedinpages                  // har类型
  2. |---src/main/ets/pages
  3. |   |---ComponentSharedInPages.ets              // 视图层-壳页面
  4. |   |---MainPage.ets                            // 视图层-主页面
  5. |   |---TakeTaxiDetailPage.ets                  // 视图层-打车页面
  6. |---src/main/ets/Components
  7. |   |---MapComponent.ets                        // 视图层-地图组件
  8. |---src/main/ets/model
  9. |   |---CommonConstants.ets                     // 模型层-通用常量
复制代码



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 qidao123.com技术社区-IT企服评测·应用市场 (https://dis.qidao123.com/) Powered by Discuz! X3.4