HarmonyOS 如何实现图片淡入淡出的效果?

如题:HarmonyOS 如何实现图片淡入淡出的效果?

阅读 532
1 个回答

基于geometryTransition能力实现,参考示例代码

@Entry
@Component
struct FadeInFadeOutImagePage {
  @State curImage: Resource = $r('app.media.image1')
  @State curImageVisibility: number = 1;
  intervalId: number = -1;
  @State usingTopImage: boolean = true;

  aboutToAppear(): void {
    this.intervalId = setInterval(() => {
      animateTo({
        duration: 1000,
      }, () => {
        this.usingTopImage = !this.usingTopImage
      })
    }, 10000);
  }

  aboutToDisappear(): void {
    clearInterval(this.intervalId)
  }

  build() {
    Stack() {
      if (this.usingTopImage) {
        Image($r('app.media.image3'))
          .autoResize(false)
          .clip(true)
          .width(300)
          .height(300)
          .geometryTransition("picture")
          .transition(TransitionEffect.OPACITY.animation({duration: 2000, curve: this.usingTopImage? Curve.EaseIn: Curve.EaseOut}))
      } else {
        Image($r('app.media.image4'))
          .autoResize(false)
          .clip(true)
          .width(300)
          .height(300)
          .geometryTransition("picture")
          .transition(TransitionEffect.OPACITY.animation({duration: 2000, curve: this.usingTopImage? Curve.EaseOut: Curve.EaseIn}))
      }
    }
    .width('100%')
    .height('100%')
  }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进