HarmonyOS 鸿蒙Next 转场动画结束回调问题

发布于 1周前 作者 h691938207 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 转场动画结束回调问题

新增的转场动画回调,TransitionFinishCallback,发现这个回调之后,之前的转场动画就没有了,为什么?

@Component
@Entry
export struct VipWebViewHalf {
  private url = '替换自己的url';
  headerHeight = 40
  closeIconWH = 16
  @State isPresent: boolean = true;
  animationDuration: number = 200;

  build() {
    NavDestination() {
      if (this.isPresent) {
        Stack() {
          Column() {
            Row() {
              Text('正在使用以下会员权益')
                .fontSize(18)
                .fontWeight(FontWeight.Bold)
                .fontColor('#191919')

              Image($r('app.media.vip_pop_close'))
                .width(this.closeIconWH)
                .height(this.closeIconWH)
                .position({ left: 16, top: (this.headerHeight - this.closeIconWH) / 2 })
                .onClick(() => {
                  this.isPresent = false;
                  /// 动画完成之后,再POP
                  setTimeout(() => {
                    RouterModule.pop(RouterNameConstants.ENTRY_HAP);
                  }, this.animationDuration + 50)
                })
            }
            .height(this.headerHeight)
            .backgroundColor('#ffffff')
            .width('100%')
            .borderRadius({ topLeft: 12, topRight: 12 })
            .justifyContent(FlexAlign.Center)

            VipWebView({ loadUrl: this.url })
              .layoutWeight(1)

            Blank().height(40)
              .backgroundColor('#ffffff')
          }
          .height('80%')
        }
        .transition(TransitionEffect.translate({ y: 1000 })
          .animation({ curve: Curve.LinearOutSlowIn, duration: this.animationDuration }),
          /// 去掉这个回调,有动画效果;加上回调,就没有动画效果了,为什么?
        //   (transitionIn) => {
        //   console.info("transition finish, transitionIn:" + transitionIn);
        // }
        )
        .align(Alignment.BottomEnd)
        .height('100%')
      }
    }
    .backgroundColor('#2f000000')
    .hideTitleBar(true)
    .mode(NavDestinationMode.DIALOG)
  }
}

更多关于HarmonyOS 鸿蒙Next 转场动画结束回调问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

奇怪了,我直接粘贴你的代码运行,没有发现你描述的问题。

我用的测试真机系统是最新版本的,兄弟你升级一波测试真机的版本再试试,应该在新版本是ok的。

更多关于HarmonyOS 鸿蒙Next 转场动画结束回调问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对HarmonyOS(鸿蒙)Next转场动画结束回调问题,以下是专业且直接的回答:

在HarmonyOS中,若要实现转场动画结束后的回调处理,你通常需要利用系统提供的动画监听器机制。具体而言,可以通过设置动画监听器(AnimationListener)来捕获动画结束事件。在动画监听器中,你可以重写onAnimationEnd方法来处理动画结束后的逻辑。

对于Next转场动画,如果它遵循了HarmonyOS的动画框架,你应该能够在动画实例上设置监听器。确保你的动画对象支持监听器接口,并在动画配置时正确添加。

此外,还需注意以下几点:

  • 确保动画对象正确初始化并启动。
  • 验证监听器是否已被正确添加到动画对象上。
  • 检查动画是否因某些条件(如被打断)而提前结束,这可能会影响回调的触发。

如果以上步骤均正确无误,但回调仍未如预期触发,可能是动画框架的内部问题或特定条件下的异常行为。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部