組件內轉場

2024-01-22 18:18 更新

組件內轉場主要通過transition屬性配置轉場參數(shù),在組件插入和刪除時顯示過渡動效,主要用于容器組件中的子組件插入和刪除時,提升用戶體驗(需要配合animateTo才能生效,動效時長、曲線、延時跟隨animateTo中的配置)。

說明

從API Version 7開始支持。后續(xù)版本如有新增內容,則采用上角標單獨標記該內容的起始版本。

屬性

名稱

參數(shù)類型

參數(shù)描述

transition

TransitionOptions

設置組件插入顯示和刪除隱藏的過渡效果。

默認值:不設置任何過渡效果時,默認有透明度從0到1的過渡效果。若設置了其他過渡效果,以設置的過渡效果為準。

說明:

所有參數(shù)均為可選參數(shù),詳細描述見TransitionOptions參數(shù)說明。

TransitionOptions參數(shù)說明

參數(shù)名稱

參數(shù)類型

必填

參數(shù)描述

type

TransitionType

默認包括組件新增和刪除。

默認值:TransitionType.All

說明:

不指定Type時說明插入刪除使用同一種效果。

opacity

number

設置組件轉場時的透明度效果,為插入時起點和刪除時終點的值。

默認值:1

取值范圍: [0, 1]

說明:

設置小于0或大于1的非法值時,按1處理。

translate

{

x? : number | string,

y? : number | string,

z? : number | string

}

設置組件轉場時的平移效果,為插入時起點和刪除時終點的值。

-x:橫向的平移距離。

-y:縱向的平移距離。

-z:豎向的平移距離。

scale

{

x? : number,

y? : number,

z? : number,

centerX? : number | string,

centerY? : number | string

}

設置組件轉場時的縮放效果,為插入時起點和刪除時終點的值。

-x:橫向放大倍數(shù)(或縮小比例)。

-y:縱向放大倍數(shù)(或縮小比例)。

-z:當前為二維顯示,該參數(shù)無效。

- centerX、centerY指縮放中心點,centerX和centerY默認值是"50%"。

- 中心點為0時,默認的是組件的左上角。

rotate

{

x?: number,

y?: number,

z?: number,

angle: number | string,

centerX?: number | string,

centerY?: number | string

}

設置組件轉場時的旋轉效果,為插入時起點和刪除時終點的值。

-x:橫向的旋轉向量。

-y:縱向的旋轉向量。

-z:豎向的旋轉向量。

- centerX,centerY指旋轉中心點,centerX和centerY默認值是"50%"。

- 中心點為(0,0)時,默認的是組件的左上角。

示例

  1. // xxx.ets
  2. @Entry
  3. @Component
  4. struct TransitionExample {
  5. @State flag: boolean = true
  6. @State show: string = 'show'
  7. build() {
  8. Column() {
  9. Button(this.show).width(80).height(30).margin(30)
  10. .onClick(() => {
  11. // 點擊Button控制Image的顯示和消失
  12. animateTo({ duration: 1000 }, () => {
  13. if (this.flag) {
  14. this.show = 'hide'
  15. } else {
  16. this.show = 'show'
  17. }
  18. this.flag = !this.flag
  19. })
  20. })
  21. if (this.flag) {
  22. // Image的顯示和消失配置為不同的過渡效果
  23. Image($r('app.media.testImg')).width(300).height(300)
  24. .transition({ type: TransitionType.Insert, scale: { x: 0, y: 1.0 } })
  25. .transition({ type: TransitionType.Delete, rotate: { angle: 180 } })
  26. }
  27. }.width('100%')
  28. }
  29. }

示意圖:

圖片完全顯示時:

圖片消失時配置順時針旋轉180°的過渡效果:

圖片完全消失時:

圖片顯示時配置橫向放大一倍的過渡效果:

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號