在HarmonyOS NEXT开发中动画结束回调监听不到?

在HarmonyOS NEXT开发中动画结束回调监听不到?

阅读 858
1 个回答

可以用animateTo定义动画参数,其中的onFinish可以设置。
参考文档: https://developer.huawei.com/consumer/cn/doc/harmonyos-refere...

import { promptAction } from '@kit.ArkUI'; 
 
@Entry 
@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%') 
  } 
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题