HarmonyOS 鸿蒙Next动画结束回调监听不到

发布于 1周前 作者 bupafengyu 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next动画结束回调监听不到#HarmonyOS最强问答官#

从文档https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V1/ts-transition-animation-component-0000001630425701-V1 中看到说指定该TransitionEffect的动画参数。该参数只用来指定动画参数,其入参AnimateParam的onFinish回调不生效。那怎么才能接收到回调呢,谢谢。

2 回复

可以用animateTo定义动画参数,其中的onFinish可以设置。参考文档:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/ts-transition-animation-component-V13

对象说明 

import { promptAction } from '[@kit](/user/kit).ArkUI';

[@Entry](/user/Entry)
[@Component](/user/Component)
struct Index {
   @State showEvaluateComponent2: boolean = false;

   aboveToAppear() {
       console.log('6666');
   }

   build() {
       Column() {
           Text("button") {
           }
           .width(100)
           .height(100)
           .onClick(() => {
               animateTo({ duration: 200 }, () => {
                   // 第一张图的TransitionEffect包含了animation,transition的动画参数由TransitionEffect指定
                   // 第二张图的TransitionEffect不包含animation,transition的动画参数由animateTo指定
                   this.showEvaluateComponent2 = !this.showEvaluateComponent2;
                   promptAction.showToast({
                       message: "动画结束"
                   });
               });
           });

           if (this.showEvaluateComponent2) {
               Text("动画") {
               }
               .width(100)
               .height(100)
               .backgroundColor(Color.Green)
               .transition(
                   TransitionEffect.asymmetric(
                       TransitionEffect.move(TransitionEdge.BOTTOM).animation({ duration: 500, curve: Curve.EaseIn }),
                       TransitionEffect.move(TransitionEdge.BOTTOM).animation({
                           duration: 200,
                           curve: Curve.EaseOut,
                           onFinish: () => {
                               promptAction.showToast({
                                   message: "动画结束"
                               });
                           },
                           finishCallbackType: FinishCallbackType.REMOVED
                       })
                   )
               )
               .animation({
                   duration: 200,
                   curve: Curve.EaseOut,
                   onFinish: () => {
                       promptAction.showToast({
                           message: "动画结束"
                       });
                   }
               });
           }
       }
       .height('100%')
       .width('100%');
   }
}

关于HarmonyOS鸿蒙Next动画结束回调监听不到的问题,这通常与动画的实现方式和回调机制有关。以下是一些可能的解决方案:

  1. 检查动画配置:确保动画配置正确,且已正确设置动画结束的回调。检查动画的属性、持续时间和触发条件,确保它们符合预期。
  2. 更新API版本:某些动画回调问题可能与API版本有关。尝试更新到最新版本的HarmonyOS,并查看是否解决了问题。
  3. 检查代码实现:确保回调接口已正确注册,并且回调方法被正确调用。有时候,代码中的小错误或遗漏可能导致回调无法触发。
  4. 阅读官方文档:深入阅读HarmonyOS的官方文档,了解动画系统的详细工作原理和回调机制。这有助于找到问题的根源,并找到相应的解决方案。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。他们将提供更专业的帮助和指导,以解决您遇到的问题。

回到顶部