W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
在全局pageTransition方法內(nèi)配置頁面入場和頁面退場時的自定義轉(zhuǎn)場動效。
從API Version 7開始支持。后續(xù)版本如有新增內(nèi)容,則采用上角標(biāo)單獨(dú)標(biāo)記該內(nèi)容的起始版本。
名稱 | 參數(shù) | 必填 | 參數(shù)描述 |
---|---|---|---|
PageTransitionEnter | { type?: RouteType, duration?: number, curve?: Curve | string, delay?: number } | 否 | 設(shè)置當(dāng)前頁面的自定義入場動效。 - type:頁面轉(zhuǎn)場效果生效的路由類型。 默認(rèn)值:RouteType.None - duration:動畫的時長。 單位:毫秒。 - curve:動畫曲線。string類型的取值支持"ease"、"ease-in"、"ease-out"、"ease-in-out"、"extreme-deceleration"、"fast-out-linear-in"、"fast-out-slow-in"、"friction"、"linear"、"linear-out-slow-in"、"rhythm"、"sharp"、"smooth"。 默認(rèn)值:Curve.Linear - delay:動畫延遲時長。 單位:毫秒 默認(rèn)值:0,默認(rèn)不延遲播放。 說明: 沒有匹配時使用系統(tǒng)默認(rèn)的頁面轉(zhuǎn)場效果(根據(jù)設(shè)備可能會有差異),如需禁用系統(tǒng)默認(rèn)頁面轉(zhuǎn)場效果,可以指定duration為0。 |
PageTransitionExit | { type?: RouteType, duration?: number, curve?: Curve | string, delay?: number } | 否 | 設(shè)置當(dāng)前頁面的自定義退場動效。 - type:頁面轉(zhuǎn)場效果生效的路由類型。 默認(rèn)值:RouteType.None。 - duration:動畫的時長,單位為毫秒。 - curve:動畫曲線,string類型取值與PageTransitionEnter相同。 默認(rèn)值:Curve.Linear - delay:動畫延遲時長,單位為毫秒,默認(rèn)不延遲播放。 默認(rèn)值:0 單位:毫秒 說明: 沒有匹配時使用系統(tǒng)默認(rèn)的頁面轉(zhuǎn)場效果(根據(jù)設(shè)備可能會有差異),如需禁用系統(tǒng)默認(rèn)頁面轉(zhuǎn)場效果,可以指定duration為0。 |
名稱 | 描述 |
---|---|
Pop | 重定向指定頁面。從PageB回退到之前的頁面PageA。對于PageB,指定RouteType為None或者Pop的PageTransitionExit組件樣式生效,對于PageA,指定RouteType為None或者Pop的PageTransitionEnter組件樣式生效。 |
Push | 跳轉(zhuǎn)到下一頁面。PageA跳轉(zhuǎn)到下一個新的界面PageB。對于PageA,指定RouteType為None或者Push的PageTransitionExit組件樣式生效,對于PageB,指定RouteType為None或者Push的PageTransitionEnter組件樣式生效。 |
None | 頁面未重定向。如Push和Pop描述中RouteType為None的情形,即頁面進(jìn)場時PageTransitionEnter的轉(zhuǎn)場效果生效;退場時PageTransitionExit的轉(zhuǎn)場效果生效。 |
參數(shù)名稱 | 參數(shù) | 必填 | 參數(shù)描述 |
---|---|---|---|
slide | 否 | 設(shè)置頁面轉(zhuǎn)場時的滑入滑出效果。 默認(rèn)值:SlideEffect.Right | |
translate | { x? : number | string, y? : number | string, z? : number | string } | 否 | 設(shè)置頁面轉(zhuǎn)場時的平移效果,為入場時起點(diǎn)和退場時終點(diǎn)的值,和slide同時設(shè)置時默認(rèn)生效slide。 - x:橫向的平移距離。 - y:縱向的平移距離。 - z:豎向的平移距離。 |
scale | { x? : number, y? : number, z? : number, centerX? : number | string, centerY? : number | string } | 否 | 設(shè)置頁面轉(zhuǎn)場時的縮放效果,為入場時起點(diǎn)和退場時終點(diǎn)的值。 - x:橫向放大倍數(shù)(或縮小比例)。 - y:縱向放大倍數(shù)(或縮小比例)。 - z:豎向放大倍數(shù)(或縮小比例)。 - centerX、centerY縮放中心點(diǎn)。 - 中心點(diǎn)為0時,默認(rèn)的是組件的左上角。 |
opacity | number | 否 | 設(shè)置入場的起點(diǎn)透明度值或者退場的終點(diǎn)透明度值。 默認(rèn)值:1 |
名稱 | 描述 |
---|---|
Left | 設(shè)置到入場時表示從左邊滑入,出場時表示滑出到左邊。 |
Right | 設(shè)置到入場時表示從右邊滑入,出場時表示滑出到右邊。 |
Top | 設(shè)置到入場時表示從上邊滑入,出場時表示滑出到上邊。 |
Bottom | 設(shè)置到入場時表示從下邊滑入,出場時表示滑出到下邊。 |
事件 | 功能描述 |
---|---|
onEnter(event: (type?: RouteType, progress?: number) => void) | 回調(diào)入?yún)楫?dāng)前入場動畫的歸一化進(jìn)度[0 - 1]。 - type:跳轉(zhuǎn)方法。 - progress:當(dāng)前進(jìn)度。 觸發(fā)該事件的條件:逐幀回調(diào),直到入場動畫結(jié)束,progress從0變化到1。 |
onExit(event: (type?: RouteType, progress?: number) => void) | 回調(diào)入?yún)楫?dāng)前退場動畫的歸一化進(jìn)度[0 - 1]。 - type:跳轉(zhuǎn)方法。 - progress:當(dāng)前進(jìn)度。 觸發(fā)該事件的條件:逐幀回調(diào),直到退場動畫結(jié)束,progress從0變化到1。 |
自定義方式1:配置了當(dāng)前頁面的入場動畫為淡入,退場動畫為縮小。
- // index.ets
- @Entry
- @Component
- struct PageTransitionExample1 {
- @State scale1: number = 1
- @State opacity1: number = 1
- build() {
- Column() {
- Navigator({ target: 'pages/page1', type: NavigationType.Push }) {
- Image($r('app.media.bg1')).width('100%').height('100%') // 圖片存放在media文件夾下
- }
- }.scale({ x: this.scale1 }).opacity(this.opacity1)
- }
- // 自定義方式1:完全自定義轉(zhuǎn)場過程的效果
- pageTransition() {
- PageTransitionEnter({ duration: 1200, curve: Curve.Linear })
- .onEnter((type: RouteType, progress: number) => {
- this.scale1 = 1
- this.opacity1 = progress
- }) // 進(jìn)場過程中會逐幀觸發(fā)onEnter回調(diào),入?yún)閯有У臍w一化進(jìn)度(0% -- 100%)
- PageTransitionExit({ duration: 1500, curve: Curve.Ease })
- .onExit((type: RouteType, progress: number) => {
- this.scale1 = 1 - progress
- this.opacity1 = 1
- }) // 退場過程中會逐幀觸發(fā)onExit回調(diào),入?yún)閯有У臍w一化進(jìn)度(0% -- 100%)
- }
- }
- // page1.ets
- @Entry
- @Component
- struct AExample {
- @State scale2: number = 1
- @State opacity2: number = 1
- build() {
- Column() {
- Navigator({ target: 'pages/index', type: NavigationType.Push }) {
- Image($r('app.media.bg2')).width('100%').height('100%') // 圖片存放在media文件夾下
- }
- }.width('100%').height('100%').scale({ x: this.scale2 }).opacity(this.opacity2)
- }
- // 自定義方式1:完全自定義轉(zhuǎn)場過程的效果
- pageTransition() {
- PageTransitionEnter({ duration: 1200, curve: Curve.Linear })
- .onEnter((type: RouteType, progress: number) => {
- this.scale2 = 1
- this.opacity2 = progress
- }) // 進(jìn)場過程中會逐幀觸發(fā)onEnter回調(diào),入?yún)閯有У臍w一化進(jìn)度(0% -- 100%)
- PageTransitionExit({ duration: 1500, curve: Curve.Ease })
- .onExit((type: RouteType, progress: number) => {
- this.scale2 = 1 - progress
- this.opacity2 = 1
- }) // 退場過程中會逐幀觸發(fā)onExit回調(diào),入?yún)閯有У臍w一化進(jìn)度(0% -- 100%)
- }
- }
自定義方式2:配置了當(dāng)前頁面的入場動畫為從左側(cè)滑入,退場為縮小加透明度變化。
- // index.ets
- @Entry
- @Component
- struct PageTransitionExample {
- @State scale1: number = 1
- @State opacity1: number = 1
- build() {
- Column() {
- Navigator({ target: 'pages/page1', type: NavigationType.Push }) {
- Image($r('app.media.bg1')).width('100%').height('100%') // 圖片存放在media文件夾下
- }
- }.scale({ x: this.scale1 }).opacity(this.opacity1)
- }
- // 自定義方式2:使用系統(tǒng)提供的多種默認(rèn)效果(平移、縮放、透明度等)
- pageTransition() {
- PageTransitionEnter({ duration: 1200 })
- .slide(SlideEffect.Left)
- PageTransitionExit({ delay: 100 })
- .translate({ x: 100.0, y: 100.0 })
- .opacity(0)
- }
- }
- // page1.ets
- @Entry
- @Component
- struct PageTransitionExample1 {
- @State scale2: number = 1
- @State opacity2: number = 1
- build() {
- Column() {
- Navigator({ target: 'pages/index', type: NavigationType.Push }) {
- Image($r('app.media.bg2')).width('100%').height('100%') // 圖片存放在media文件夾下
- }
- }.scale({ x: this.scale2 }).opacity(this.opacity2)
- }
- // 自定義方式2:使用系統(tǒng)提供的多種默認(rèn)效果(平移、縮放、透明度等)
- pageTransition() {
- PageTransitionEnter({ duration: 1200 })
- .slide(SlideEffect.Left)
- PageTransitionExit({ delay: 100 })
- .translate({ x: 100.0, y: 100.0 })
- .opacity(0)
- }
- }
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: