共享元素轉(zhuǎn)場(chǎng)

2024-01-22 18:18 更新

當(dāng)路由進(jìn)行切換時(shí),可以通過(guò)設(shè)置組件的 sharedTransition 屬性將該元素標(biāo)記為共享元素并設(shè)置對(duì)應(yīng)的共享元素轉(zhuǎn)場(chǎng)動(dòng)效。

說(shuō)明

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

屬性

名稱

參數(shù)

參數(shù)描述

sharedTransition

id: string,

{

duration?: number,

curve?: Curve | string,

delay?: number,

motionPath?:

{

path: string,

form?: number,

to?: number,

rotatable?: boolean

},

zIndex?: number,

type?: SharedTransitionEffectType

}

兩個(gè)頁(yè)面中id值相同且不為空字符串的組件即為共享元素,在頁(yè)面轉(zhuǎn)場(chǎng)時(shí)可顯示共享元素轉(zhuǎn)場(chǎng)動(dòng)效。

- id:設(shè)置組件的id。

- duration:描述共享元素轉(zhuǎn)場(chǎng)動(dòng)效播放時(shí)長(zhǎng)。

默認(rèn)值:1000

單位:毫秒

取值范圍:[0, +∞)

- curve:默認(rèn)曲線為L(zhǎng)inear,有效值參見(jiàn)Curve說(shuō)明。

- delay:?jiǎn)挝粸楹撩?,默認(rèn)不延時(shí)播放。

默認(rèn)值:0

單位:毫秒

取值范圍:[0, +∞)

設(shè)置小于0的值時(shí),按值為0處理。

- motionPath:運(yùn)動(dòng)路徑信息,詳細(xì)說(shuō)明請(qǐng)參考路徑動(dòng)畫

- path:設(shè)置路徑。

- from:設(shè)置起始值。

- to:設(shè)置終止值。

- rotatable:是否旋轉(zhuǎn)。

默認(rèn)值:false

- zIndex:設(shè)置Z軸。

默認(rèn)值:0

- type:動(dòng)畫類型。

默認(rèn)值:SharedTransitionEffectType.Exchange

說(shuō)明

type為SharedTransitionEffectType.Exchange時(shí)motionPath才會(huì)生效。

示例

示例代碼為點(diǎn)擊圖片跳轉(zhuǎn)頁(yè)面時(shí),顯示共享元素圖片的自定義轉(zhuǎn)場(chǎng)動(dòng)效。

  1. // xxx.ets
  2. @Entry
  3. @Component
  4. struct SharedTransitionExample {
  5. @State active: boolean = false
  6. build() {
  7. Column() {
  8. Navigator({ target: 'pages/PageB', type: NavigationType.Push }) {
  9. Image($r('app.media.ic_health_heart')).width(50).height(50)
  10. .sharedTransition('sharedImage', { duration: 800, curve: Curve.Linear, delay: 100 })
  11. }.padding({ left: 20, top: 20 })
  12. .onClick(() => {
  13. this.active = true
  14. })
  15. }
  16. }
  17. }
  1. // PageB.ets
  2. @Entry
  3. @Component
  4. struct pageBExample {
  5. build() {
  6. Stack() {
  7. Image($r('app.media.ic_health_heart')).width(150).height(150)
  8. .sharedTransition('sharedImage', { duration: 800, curve: Curve.Linear, delay: 100 })
  9. }.width('100%').height('100%')
  10. }
  11. }

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)