HarmonyOS 发现页的一镜到底方案实现

HarmonyOS
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
aquaa

参照官方示例对Navigation添加customNavContentTransition自定义转场:

https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-navigation.md#%E7%A4%BA%E4%BE%8B3

添加后每次转场时都会走这个函数,返回undefined的话则走默认的navigation左右转场,返回NavigationAnimatedTransition类型对象的话则走对应的自定义转场动画实现。因此在customNavContentTransition函数中需要自行添加路由管控,基本方式是对from.name和to.name以及是否注册了转场动画实现等进行判断,来决定是否走自定义转场。

Navigation(this.pageInfos)
  .hideNavBar(true)
  .customNavContentTransition((from: NavContentInfo, to: NavContentInfo, operation: NavigationOperation) => {
    if ((!from || !to) || (!from.name || !to.name)) {
      return undefined;
    }
    // 通过from和to的name对自定义转场路由进行管控
    if (!this.isCustomTransitionEnabled(from.name, to.name)) {
      return undefined;
    }
    // 针对点击按钮A走自定义转场点击按钮B走默认转场的场景,需要对是否注册了animation进行判断,来决定是否走自定义转场
    let fromParam: AnimateCallback = CustomTransition.getInstance().getAnimateParam(from.index);
    let toParam: AnimateCallback = CustomTransition.getInstance().getAnimateParam(to.index);
    if (!fromParam.animation && !toParam.animation) {
      return undefined;
    }
    // 一切判断完成后,构造customAnimation给系统侧调用,执行自定义转场动画
    let customAnimation: NavigationAnimatedTransition = {
      onTransitionEnd: (isSuccess: boolean) => {
        console.log(TAG, `current transition result is ${isSuccess}`);
      },
      timeout: 1000,
      transition: (transitionProxy: NavigationTransitionProxy) => {
        console.log(TAG, 'trigger transition callback');
        if (fromParam.animation) {
          fromParam.animation(operation == NavigationOperation.PUSH, true, transitionProxy);
        }
        if (toParam.animation) {
          toParam.animation(operation == NavigationOperation.PUSH, false, transitionProxy);
        }
      }
    };
    return customAnimation;
  })
分享
微博
QQ
微信
回复
1天前
相关问题
HarmonyOS实现方案问题
63浏览 • 2回复 待解决
鸿蒙闪屏实现怎么实现
4777浏览 • 1回复 待解决
HarmonyOS 列表实现方案
69浏览 • 1回复 待解决
鸿蒙系统异构组网到底实现了没有?
8535浏览 • 1回复 待解决
HarmonyOS IOC实现方案
29浏览 • 1回复 待解决
HarmonyOS 加密和解密方案实现
35浏览 • 1回复 待解决
HarmonyOS List瀑布流实现方案
180浏览 • 1回复 待解决
如何实现列表单选效果
2474浏览 • 0回复 待解决
HarmonyOS NFC方案如何实现
7浏览 • 1回复 待解决