Android开发@IT·互联网鸿蒙(HarmonyOS)开发知识

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

2024-08-19  本文已影响0人  迪士尼在逃程序员

介绍

本示例提供组件实例在页面间共享的解决方案:通过Stack 容器,下层放地图组件,上层放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%')
  }
 // 页面用于显示地图的区域,放一个空的容器组件,背景默认透明,来显示下层的地图组件(该组件父组件也需要设置透明)
 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
  })
  .onScrollFrameBegin((offset) => {
    this.scrollCurOffset = this.scroller.currentOffset().yOffset;
    this.mapResponseRegionHeight =
      this.transParentInitHeight - this.scrollCurOffset > 0 ? this.transParentInitHeight - this.scrollCurOffset:0;
    return {offsetRemain : offset}
  })

高性能知识点

工程结构&模块类型

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

写在最后

如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙

上一篇 下一篇

猜你喜欢

热点阅读