• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 运动模糊
2<!--Kit: ArkUI-->
3<!--Subsystem: ArkUI-->
4<!--Owner: @CCFFWW-->
5<!--Designer: @yangfan229-->
6<!--Tester: @lxl007-->
7<!--Adviser: @HelloCrease-->
8
9设置组件由缩放大小或位移变化引起的运动过程中的动态模糊效果。需要与动画的AnimateParam的onFinish参数配合使用。
10
11>  **说明:**
12>
13>  从API version 12开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
14
15## motionBlur
16
17motionBlur(value: MotionBlurOptions): T
18
19在当前组件由缩放大小或位移变化引起的运动过程中,增加动态模糊效果。
20
211、不建议在组件内转场、共享元素转场、组件内隐式元素转场和粒子动画场景中使用该属性,否则会产生非预期效果。
22
232、该属性需要在开始状态将motionBlur的参数radius设置为0,否则冷启动时会有非预期效果。
24
253、该属性需要与动画的AnimateParam的onFinish参数配合使用,需要在运动模糊动画结束后将motionBlur的参数radius置为0,否则会产生非预期效果。
26
274、在使用该属性过程中,不要在使用过程中频繁更改同一个组件的模糊半径,否则会产生非预期效果。比如示例中的动画,频繁点击会出现模糊效果偶尔失效的情况。
28
295、运动模糊锚点坐标需要与动画缩放的锚点保持一致,否则会产生非预期效果。
30
316、模糊半径建议设置1以内,否则会产生非预期效果。
32
33**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
34
35**系统能力:** SystemCapability.ArkUI.ArkUI.Full
36
37**参数:**
38
39| 参数名 | 类型                                            | 必填 | 说明               |
40| ------ | ----------------------------------------------- | ---- | ------------------ |
41| value  | [MotionBlurOptions](#motionbluroptions对象说明) | 是   | 定义运动模糊参数。 |
42
43**返回值:**
44
45| 类型   | 说明                     |
46| ------ | ------------------------ |
47| T | 返回当前组件。 |
48
49## motionBlur<sup>18+</sup>
50
51motionBlur(motionBlur: Optional\<MotionBlurOptions>): T
52
53在当前组件由缩放大小或位移变化引起的运动过程中,增加动态模糊效果。与[motionBlur](#motionblur)相比,motionBlur参数新增了对undefined类型的支持。
54
551、不建议在组件内转场、共享元素转场、组件内隐式元素转场、粒子动画场景下使用该属性,否则会产生非预期效果。
56
572、该属性需要在开始状态将motionBlur的参数radius设置为0,否则冷启动时会有非预期效果。
58
593、该属性需要与动画的AnimateParam的onFinish参数配合使用,需要在运动模糊动画结束后将motionBlur的参数radius置为0,否则会产生非预期效果。
60
614、在使用该属性过程中,不要在使用过程中频繁更改同一个组件的模糊半径,否则会产生非预期效果。比如示例中的动画,频繁点击会出现模糊效果偶尔失效的情况。
62
635、运动模糊锚点坐标需要与动画缩放的锚点保持一致,否则会产生非预期效果。
64
656、模糊半径建议设置1以内,否则会产生非预期效果。
66
67**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
68
69**系统能力:** SystemCapability.ArkUI.ArkUI.Full
70
71**参数:**
72
73|   参数名    |    类型                                                      |  必填  |     说明                                                       |
74| ---------- | ---------------------------------------------------------- | ---- | ------------------------------------------------------------ |
75| motionBlur | Optional\<[MotionBlurOptions](#motionbluroptions对象说明)> | 是   | 定义运动模糊参数。<br/>当motionBlur的值为undefined时,维持之前取值。 |
76
77**返回值:**
78
79| 类型   | 说明                     |
80| ------ | ------------------------ |
81| T | 返回当前组件。 |
82
83## MotionBlurOptions对象说明
84
85运动模糊选项。
86
87**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
88
89**系统能力:** SystemCapability.ArkUI.ArkUI.Full
90
91| 名称          | 类型                                                        | 只读  | 可选  | 说明                                                         |
92| ------------- | ----------------------------------------------------------- | ----- | ----- | ------------------------------------------------------------ |
93| radius | number      | 否    | 否    | 模糊半径,取值范围[0.0, ∞),建议设置1.0以内。 |
94| anchor | [MotionBlurAnchor](#motionbluranchor对象说明) | 否    | 否    | 运动模糊锚点坐标。运动模糊锚点坐标设置时需要与动画缩放的锚点保持一致设置。 |
95
96## MotionBlurAnchor对象说明
97
98运动模糊锚坐标。
99
100**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
101
102**系统能力:** SystemCapability.ArkUI.ArkUI.Full
103
104| 名称          | 类型                                                        | 只读  | 可选  | 说明                                                         |
105| ------------- | ----------------------------------------------------------- | ----- | ----- | ------------------------------------------------------------ |
106| x | number      | 否    | 否    | 锚点坐标x值,取值范围[0.0, 1.0]。 |
107| y | number      | 否    | 否    | 锚点坐标y值,取值范围[0.0, 1.0]。 |
108
109## 示例
110
111属性动画状态下添加运动模糊效果。
112```ts
113// xxx.ets
114import { curves } from '@kit.ArkUI';
115
116@Entry
117@Component
118struct MotionBlurTest {
119  @State widthSize: number = 400;
120  @State heightSize: number = 320;
121  @State flag: boolean = true;
122  @State radius: number = 0;
123  @State x: number = 0;
124  @State y: number = 0;
125
126  build() {
127    Column() {
128      Column() {
129        // $r("app.media.testImg")需要替换为开发者所需的图像资源文件。
130        Image($r('app.media.testImg'))
131          .width(this.widthSize)
132          .height(this.heightSize)
133          .onClick(() => {
134            this.radius = 5;
135            this.x = 0.5;
136            this.y = 0.5;
137            if (this.flag) {
138              this.widthSize = 100;
139              this.heightSize = 80;
140            } else {
141              this.widthSize = 400;
142              this.heightSize = 320;
143            }
144            this.flag = !this.flag;
145          })
146          .animation({
147            duration: 2000,
148            curve: curves.springCurve(10, 1, 228, 30),
149            onFinish: () => {
150              this.radius = 0;
151            }
152          })
153          .motionBlur({ radius: this.radius, anchor: { x: this.x, y: this.y } })
154      }
155    }.width('100%').margin({ top: 5 })
156  }
157}
158```
159
160![motionBlurTest](figures/motionBlur.gif)
161