• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 组件内容填充方式
2
3用于决定在组件的宽高动画过程中,如何将动画最终的组件内容绘制在组件上。
4
5>  **说明:**
6>
7> 从API Version 10开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
8
9
10## 属性
11
12| 名称    | 参数类型                                     | 必填 | 描述                                  |
13| -----| ------------------------------------------ | -----| ------------------------------------ |
14| renderFit | [RenderFit](#renderfit枚举说明) | 是 | 设置宽高动画过程中的组件内容填充方式。<br/>当不设置renderFit属性时,取默认值RenderFit.TOP_LEFT。 |
15
16## RenderFit枚举说明
17
18| 名称    | 描述                                  | 示意图                            |
19| ------- | ------------------------------------ | --------------------------------- |
20| CENTER | 保持动画终态的内容大小,并且内容始终与组件保持中心对齐。 | ![renderfit_center](figures/renderfit_center.png) |
21| TOP    | 保持动画终态的内容大小,并且内容始终与组件保持顶部中心对齐。 | ![renderfit_top](figures/renderfit_top.png) |
22| BOTTOM | 保持动画终态的内容大小,并且内容始终与组件保持底部中心对齐。 | ![renderfit_bottom](figures/renderfit_bottom.png) |
23| LEFT   | 保持动画终态的内容大小,并且内容始终与组件保持左侧对齐。 | ![renderfit_left](figures/renderfit_left.png) |
24| RIGHT  | 保持动画终态的内容大小,并且内容始终与组件保持右侧对齐。 | ![renderfit_right](figures/renderfit_right.png) |
25| TOP_LEFT | 保持动画终态的内容大小,并且内容始终与组件保持左上角对齐。 | ![renderfit_top_left](figures/renderfit_top_left.png) |
26| TOP_RIGHT | 保持动画终态的内容大小,并且内容始终与组件保持右上角对齐。 | ![renderfit_top_right](figures/renderfit_top_right.png) |
27| BOTTOM_LEFT | 保持动画终态的内容大小,并且内容始终与组件保持左下角对齐。 | ![renderfit_bottom_left](figures/renderfit_bottom_left.png) |
28| BOTTOM_RIGHT | 保持动画终态的内容大小,并且内容始终与组件保持右下角对齐。 | ![renderfit_bottom_right](figures/renderfit_bottom_right.png) |
29| RESIZE_FILL | 不考虑动画终态内容的宽高比,并且内容始终缩放到组件的大小。 | ![renderfit_resize_fill](figures/renderfit_resize_fill.png) |
30| RESIZE_CONTAIN | 保持动画终态内容的宽高比进行缩小或放大,使内容完整显示在组件内,且与组件保持中心对齐。 | ![renderfit_resize_contain](figures/renderfit_resize_contain.png) |
31| RESIZE_CONTAIN_TOP_LEFT | 保持动画终态内容的宽高比进行缩小或放大,使内容完整显示在组件内。当组件宽方向有剩余时,内容与组件保持左侧对齐,当组件高方向有剩余时,内容与组件保持顶部对齐。 | ![renderfit_resize_contain_top_left](figures/renderfit_resize_contain_top_left.png) |
32| RESIZE_CONTAIN_BOTTOM_RIGHT | 保持动画终态内容的宽高比进行缩小或放大,使内容完整显示在组件内。当组件宽方向有剩余时,内容与组件保持右侧对齐,当组件高方向有剩余时,内容与组件保持底部对齐。 | ![renderfit_resize_contain_bottom_right](figures/renderfit_resize_contain_bottom_right.png) |
33| RESIZE_COVER | 保持动画终态内容的宽高比进行缩小或放大,使内容两边都大于或等于组件两边,且与组件保持中心对齐,显示内容的中间部分。 | ![renderfit_resize_cover](figures/renderfit_resize_cover.png) |
34| RESIZE_COVER_TOP_LEFT | 保持动画终态内容的宽高比进行缩小或放大,使内容的两边都恰好大于或等于组件两边。当内容宽方向有剩余时,内容与组件保持左侧对齐,显示内容的左侧部分。当内容高方向有剩余时,内容与组件保持顶部对齐,显示内容的顶侧部分。 | ![renderfit_resize_cover_top_left](figures/renderfit_resize_cover_top_left.png) |
35| RESIZE_COVER_BOTTOM_RIGHT | 保持动画终态内容的宽高比进行缩小或放大,使内容的两边都恰好大于或等于组件两边。当内容宽方向有剩余时,内容与组件保持右侧对齐,显示内容的右侧部分。当内容高方向有剩余时,内容与组件保持底部对齐,显示内容的底侧部分。| ![renderfit_resize_cover_bottom_right](figures/renderfit_resize_cover_bottom_right.png) |
36
37> **说明:**
38>
39> - 示意图中,蓝色区域表示内容,橙黄色区域表示节点大小。
40> - 不同的内容填充方式在宽高动画过程中效果不一致,开发者需要选择合适的内容填充方式以实现需要的动画效果。
41
42## 示例
43
44```ts
45// xxx.ets
46@Entry
47@Component
48struct RenderFitExample {
49  @State width1: number = 100;
50  @State height1: number = 30;
51  flag: boolean = true;
52  build() {
53    Column() {
54      Text("Hello")
55        .width(this.width1)
56        .height(this.height1)
57        .borderWidth(1)
58        .textAlign(TextAlign.Start)
59        .renderFit(RenderFit.LEFT) // 设置LEFT的renderFit,动画过程中,动画的终态内容与组件保持左对齐
60        .margin(20)
61
62      Text("Hello")
63        .width(this.width1)
64        .height(this.height1)
65        .textAlign(TextAlign.Center)
66        .borderWidth(1)
67        .renderFit(RenderFit.CENTER) // 设置CENTER的renderFit,动画过程中,动画的终态内容与组件保持中心对齐
68        .margin(20)
69
70      Button("animate")
71        .onClick(() => {
72          animateTo({ curve: Curve.Ease }, () => {
73            if (this.flag) {
74              this.width1 = 150;
75              this.height1 = 50;
76            } else {
77              this.width1 = 100;
78              this.height1 = 30;
79            }
80            this.flag = !this.flag;
81          })
82        })
83    }.width("100%").height("100%").alignItems(HorizontalAlign.Center)
84  }
85}
86```
87
88![renderfit](figures/renderfit.gif)
89