ts-transition-animation-component.md 3.6 KB
Newer Older
Z
zengyawen 已提交
1
# 组件内转场
Z
zengyawen 已提交
2

3 4
组件转场主要通过transition属性进行配置转场参数,在组件插入和删除时进行过渡动效,主要用于容器组件子组件插入删除时提升用户体验(需要配合animateTo才能生效,动效时长、曲线、延时跟随animateTo中的配置)。

H
geshi  
HelloCrease 已提交
5
>  **说明:**
Z
zengyawen 已提交
6
> 从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
Z
zengyawen 已提交
7 8


Z
zengyawen 已提交
9
## 属性
Z
zengyawen 已提交
10

11

Z
zengyawen 已提交
12 13 14
| 名称 | 参数类型 | 默认值 | 参数描述 |
| -------- | -------- | -------- | -------- |
| transition | Object | - | 所有参数均为可选参数,详细描述见transition入参说明。 |
Z
zengyawen 已提交
15

Z
zengyawen 已提交
16 17 18
- transition入参说明
  | 参数名称 | 参数类型 | 默认值 | 必填 | 参数描述 |
  | -------- | -------- | -------- | -------- | -------- |
K
kangchongtao 已提交
19
  | type | [TransitionType](ts-appendix-enums.md#transitiontype)  | TransitionType.All | 否 | 默认包括组件新增和删除。<br/>>&nbsp;&nbsp;**说明:**<br/>>&nbsp;不指定Type时说明插入删除使用同一种效果。 |
Z
zengyawen 已提交
20
  | opacity | number | 1 | 否 | 设置组件转场时的透明度效果,为插入时起点和删除时终点的值。 |
G
gmy 已提交
21 22 23
  | translate | {<br/>x?&nbsp;:&nbsp;number,<br/>y?&nbsp;:&nbsp;number,<br/>z?&nbsp;:&nbsp;number<br/>} | - | 否 | 设置组件转场时的平移效果,为插入时起点和删除时终点的值。<br/>-x:横向的平移距离。<br/>-y:纵向的平移距离。<br/>-z:竖向的平移距离。 |
  | scale | {<br/>x?&nbsp;:&nbsp;number,<br/>y?&nbsp;:&nbsp;number,<br/>z?&nbsp;:&nbsp;number,<br/>centerX?&nbsp;:&nbsp;number,<br/>centerY?&nbsp;:&nbsp;number<br/>} | - | 否 | 设置组件转场时的缩放效果,为插入时起点和删除时终点的值。<br/>-x:横向放大倍数(或缩小比例)。<br/>-y:纵向放大倍数(或缩小比例)。<br/>-z:竖向放大倍数(或缩小比例)。<br/>-&nbsp;centerX、centerY缩放中心点。<br/>-&nbsp;中心点为0时,默认的是组件的左上角。<br/> |
  | rotate | {<br/>x?:&nbsp;number,<br/>y?:&nbsp;number,<br/>z?:&nbsp;number,<br/>angle?:&nbsp;Angle,<br/>centerX?:&nbsp;Length,<br/>centerY?:&nbsp;Length<br/>} | - | 否 | 设置组件转场时的旋转效果,为插入时起点和删除时终点的值。<br/>-x:横向的旋转向量。<br/>-y:纵向的旋转向量。<br/>-z:竖向的旋转向量。<br/>-&nbsp;centerX,centerY指旋转中心点。<br/>-&nbsp;中心点为(0,0)时,默认的是组件的左上角。 |
Z
zengyawen 已提交
24 25


Z
zengyawen 已提交
26
## 示例
Z
zengyawen 已提交
27 28 29

示例功能通过一个Button控制第二个Button的出现和消失,并通过transition配置第二个Button出现和消失的过场动画。

H
geshi  
HelloCrease 已提交
30 31
```ts
// xxx.ets
Z
zengyawen 已提交
32 33 34
@Entry
@Component
struct TransitionExample {
35
  @State btn: boolean = false
Z
zengyawen 已提交
36
  @State show: string = "show"
37

Z
zengyawen 已提交
38 39 40 41 42
  build() {
    Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center,}) {
      Button(this.show).width(80).height(30).backgroundColor(0x317aff).margin({bottom:50})
        .onClick(() => {
          animateTo({ duration: 1000 }, () => {
43 44
            this.btn = !this.btn
            if(this.btn){
Z
zengyawen 已提交
45 46 47 48 49 50
              this.show = "hide"
            }else{
              this.show = "show"
            }
          })
        })
51
      if (this.btn) {
Z
zengyawen 已提交
52 53 54 55 56 57 58 59 60 61 62
        // 插入和删除配置为不同的过渡效果
        Button() {
          Image($r('app.media.bg1')).width("80%").height(300)
        }.transition({ type: TransitionType.Insert, scale : {x:0,y:1.0} })
        .transition({ type: TransitionType.Delete, scale: { x: 1.0, y: 0.0 } })
      }
    }.height(400).width("100%").padding({top:100})
  }
}
```

Z
zengyawen 已提交
63
![zh-cn_image_0000001174582850](figures/zh-cn_image_0000001174582850.gif)