屬性動畫

2024-01-22 18:17 更新

組件的某些通用屬性變化時,可以通過屬性動畫實現(xiàn)漸變過渡效果,提升用戶體驗。支持的屬性包括width、height、backgroundColor、opacity、scale、rotate、translate等。

說明

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

animation(value: {duration?: number, tempo?: number, curve?: string | Curve | ICurve, delay?:number, iterations: number, playMode?: PlayMode, onFinish?: () => void})

從API version 9開始,該接口支持在ArkTS卡片中使用。

參數(shù):

名稱

參數(shù)類型

必填

描述

duration

number

設置動畫時長。

默認值:1000

單位:毫秒

從API version 9開始,該接口支持在ArkTS卡片中使用。

說明:

- 在ArkTS卡片上最大動畫持續(xù)時間為1000毫秒。

- 設置浮點型類型的值時,向下取整;設置值為1.2,按照1處理。

tempo

number

動畫播放速度。數(shù)值越大,動畫播放速度越快,數(shù)值越小,播放速度越慢。值為0時,表示不存在動畫。

默認值:1

curve

string | Curve | ICurve9+

設置動畫曲線。

默認值:Curve.EaseInOut

從API version 9開始,該接口支持在ArkTS卡片中使用。

delay

number

設置動畫延遲執(zhí)行的時長。

默認值:0,不延遲播放。

單位:毫秒

取值范圍:[0, +∞)

說明:

設置浮點型類型的值時,向下取整。例如,設置值為1.2,按照1處理。

iterations

number

設置播放次數(shù)。

默認值:1

取值范圍:[-1, +∞)

說明:

設置為-1時表示無限次播放。設置為0時表示無動畫效果。

playMode

PlayMode

設置動畫播放模式,默認播放完成后重頭開始播放。

默認值:PlayMode.Normal

從API version 9開始,該接口支持在ArkTS卡片中使用。

onFinish

() => void

狀態(tài)回調(diào),動畫播放完成時觸發(fā)。

從API version 9開始,該接口支持在ArkTS卡片中使用。

說明:

當iterations設置為-1時,動畫效果無限循環(huán)不會停止,所以不會觸發(fā)此回調(diào)。

示例

  1. // xxx.ets
  2. @Entry
  3. @Component
  4. struct AttrAnimationExample {
  5. @State widthSize: number = 250
  6. @State heightSize: number = 100
  7. @State rotateAngle: number = 0
  8. @State flag: boolean = true
  9. build() {
  10. Column() {
  11. Button('change size')
  12. .onClick(() => {
  13. if (this.flag) {
  14. this.widthSize = 150
  15. this.heightSize = 60
  16. } else {
  17. this.widthSize = 250
  18. this.heightSize = 100
  19. }
  20. this.flag = !this.flag
  21. })
  22. .margin(30)
  23. .width(this.widthSize)
  24. .height(this.heightSize)
  25. .animation({
  26. duration: 2000,
  27. curve: Curve.EaseOut,
  28. iterations: 3,
  29. playMode: PlayMode.Normal
  30. })
  31. Button('change rotate angle')
  32. .onClick(() => {
  33. this.rotateAngle = 90
  34. })
  35. .margin(50)
  36. .rotate({ angle: this.rotateAngle })
  37. .animation({
  38. duration: 1200,
  39. curve: Curve.Friction,
  40. delay: 500,
  41. iterations: -1, // 設置-1表示動畫無限循環(huán)
  42. playMode: PlayMode.Alternate
  43. })
  44. }.width('100%').margin({ top: 20 })
  45. }
  46. }

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號