鸿蒙0基础学习【共享元素转场 (sharedTransition)】ArkUI
共享元素转场动画(sharedTransition)使用说明 该属性通过设置id标识共享元素,在页面路由跳转时实现过渡动画效果(API 7+支持)。 关键参数: id:必填项,标识共享元素的唯一字符串 options:可选动画配置,包括: duration:动画时长(默认1000ms) curve:动画曲线(默认线性) motionPath:运动路径(仅Exchange类型有效) type:动画类
·
可以通过设置组件的 sharedTransition 属性将该元素标记为共享元素并设置对应的共享元素转场动效。sharedTransition仅发生在页面路由(router)跳转时。
说明:
从API version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
属性
名称 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|
id | string | 是 | 两个页面中id值相同且不为空字符串的组件即为共享元素,在页面转场时可显示共享元素转场动效。 |
options | [sharedTransitionOptions] | 否 | 共享元素转场动画参数。 |
说明:
type为SharedTransitionEffectType.Exchange时motionPath才会生效。
type为SharedTransitionEffectType.Exchange时,效果为对匹配的共享元素产生位置、大小的过渡(可通过配置组件的border观察),不支持内容的过渡效果。例如,Text组件在两个页面上使用不同的fontSize属性值,即绘制内容有大小差异,在sharedTransition动画结束后的最后一帧,Text的fontSize效果会突变为跳转目标页fontSize的效果。
sharedTransitionOptions
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
名称 | 参数类型 | 是否必填 | 参数描述 |
---|---|---|---|
duration | number | 否 | 描述共享元素转场动效播放时长。 默认值:1000。 单位:毫秒。 取值范围:[0, +∞)。 |
curve | [Curve | string | [ICurve]10+ |
delay | number | 否 | 延迟播放时间。 默认值:0。 单位:毫秒。 |
motionPath | [MotionPathOptions] | 否 | 运动路径信息。 |
zIndex | number | 否 | 设置Z轴。 取值范围:(-∞, +∞)。 |
type | [SharedTransitionEffectType] | 否 | 动画类型。 默认值:SharedTransitionEffectType.Exchange。 |
示例
示例代码为点击图片跳转页面时,显示共享元素图片的自定义转场动效。
// xxx.ets
@Entry
@Component
struct SharedTransitionExample {
@State active: boolean = false
build() {
Column() {
Navigator({ target: 'pages/PageB', type: NavigationType.Push }) {
Image($r('app.media.ic_health_heart')).width(50).height(50)
.sharedTransition('sharedImage', { duration: 800, curve: Curve.Linear, delay: 100 })
}.padding({ left: 20, top: 20 })
.onClick(() => {
this.active = true
})
}
}
}
ts
// PageB.ets
@Entry
@Component
struct pageBExample {
build() {
Stack() {
Image($r('app.media.ic_health_heart')).width(150).height(150)
.sharedTransition('sharedImage', { duration: 800, curve: Curve.Linear, delay: 100 })
}.width('100%').height('100%')
}
}
ts
更多推荐
所有评论(0)