HarmonyOS 动画使用问题

代码如下:

@Entry
@Component
struct AnimationPage {
  @State message: string = 'Hello World';
  @State visible: boolean = false
  build() {
    Column() {
      Button('click to show').margin({ top: 20, bottom: 20 })
        .onClick(() => {
          this.visible = !this.visible
        })

      Column() {

      }
      .width(100)
      .height(100)
      .visibility(this.visible ? Visibility.Visible : Visibility.Hidden)
      .backgroundColor(Color.Red)
      .transition(TransitionEffect.opacity(0.8).animation({
        duration: 2000,
        onFinish: () => {
          console.log("AnimationTest", "animation finish")
        }
      }))
      .onVisibleAreaChange([0.0, 1.0], (isVisible: boolean, currentRatio: number) => {
        if (!isVisible && currentRatio <= 0) {
          console.log("AnimationTest", "visibleAreaChange")
        }
      })
    }
    .height('100%')
    .width('100%')
  }
}

在上述代码中,如何监听动画结束回调?

.transition(TransitionEffect.opacity(0.8).animation({
  duration: 2000,
  onFinish: () => {
    console.log("AnimationTest", "animation finish")
  }
}))

onFinish没有回调如何监听到动画开始和结束的回调呢?

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

文档中对animation参数的说明,其入参AnimateParam的onFinish回调不生效。https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-transition-animation-component-V5#transitioneffect10%E5%AF%B9%E8%B1%A1%E8%AF%B4%E6%98%8E

参考示例如下:

// 使用animateTo显示动画处理在onFinish回调中监听动画结束
@Entry
@Component
struct TransitionEffectExample1 {
  @State flag: boolean = false;
  @State show: string = 'show';
  @State visible: boolean = false;
  @State columnOpacity: number = 1;

  build() {
    Column() {
      Button(this.show).width(80).height(30).margin(30)
        .onClick(() => {
          this.flag = !this.flag;
          // 点击Button控制Image的显示和消失
          if (this.flag) {
            this.show = 'hide';
          } else {
            this.show = 'show';
          }
          animateTo({
            duration: 1000,
            curve: Curve.EaseOut,
            iterations: 1,
            playMode: PlayMode.Alternate,
            onFinish: () => {
              console.info('play end')
            }
          }, () => {
            this.visible = !this.visible
          })
        })
      Column() {
      }
      .onClick(() => {
        console.log("click");
      })
      .backgroundColor(Color.Red)
      .width(200)
      .height(200)
      .opacity(this.columnOpacity)
      .visibility(this.visible ? Visibility.Visible : Visibility.Hidden)
    }.width('100%')
  }
}
分享
微博
QQ
微信
回复
1天前
相关问题
HarmonyOS PAG动画使用问题
28浏览 • 1回复 待解决
HarmonyOS 缩放动画问题
54浏览 • 1回复 待解决
HarmonyOS Grid拖拽动画问题
72浏览 • 1回复 待解决
HarmonyOS 路径动画相关问题
674浏览 • 1回复 待解决
HarmonyOS Naviagtion动画问题咨询
35浏览 • 1回复 待解决
HarmonyOS 平移动画问题
0浏览 • 0回复 待解决
HarmonyOS CAPI动画怎么使用
330浏览 • 1回复 待解决
HarmonyOS 动画执行时机问题
277浏览 • 1回复 待解决
关于属性动画问题
10132浏览 • 3回复 待解决
如何使用弹簧动画曲线
648浏览 • 1回复 待解决
求助动画效果问题有懂的吗?
4226浏览 • 1回复 待解决
HarmonyOS textpicker使用问题
306浏览 • 1回复 待解决
HarmonyOS filePreview使用问题
378浏览 • 1回复 待解决
HarmonyOS onAreaChange使用问题
823浏览 • 1回复 待解决
HarmonyOS ProtoBuffer使用问题
507浏览 • 1回复 待解决
HarmonyOS Slider使用问题
43浏览 • 1回复 待解决
提问
该提问已有0人参与 ,帮助了0人