• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 特效绘制合并
2
3用于对背景模糊等特效进行绘制合并。
4
5> **说明:**
6>
7> 从API Version 12开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
8>
9
10## useEffect
11
12useEffect(value: boolean)
13
14用于对背景模糊等特效进行绘制合并。
15
16**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
17
18**系统能力:** SystemCapability.ArkUI.ArkUI.Full
19
20**参数:**
21
22| 参数名 | 类型 | 必填 | 说明 |
23| -------- | -------- | -------- | -------- |
24| value | boolean | 是 | 控制组件是否继承EffectComponent组件的特效属性参数,从而合并绘制特效。<br/>useEffect为true时子组件继承EffectComponent组件的特效属性参数,为false时子组件不继承EffectComponent组件的特效属性参数。<br/>默认值:false|
25
26## useEffect<sup>14+</sup>
27
28useEffect(useEffect: boolean, effectType: EffectType)
29
30用于设置组件是否应用<!--Del-->父级[EffectComponent](ts-container-effectcomponent-sys.md)或<!--DelEnd-->窗口定义的效果模板。
31
32**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。
33
34**系统能力:** SystemCapability.ArkUI.ArkUI.Full
35
36**参数:**
37
38| 参数名     | 类型                                                         | 必填 | 说明                                                         |
39| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
40| useEffect  | boolean                                                      | 是   | 控制组件是否应用<!--Del-->父级EffectComponent或<!--DelEnd-->窗口定义的效果模板。<br/>useEffect为true时表示应用<!--Del-->父级EffectComponent或<!--DelEnd-->窗口定义的效果模板。<br/>默认值:false |
41| effectType | [EffectType](ts-universal-attributes-use-effect.md#effecttype14) | 是   | 设置组件应用<!--Del-->父级EffectComponent或<!--DelEnd-->窗口定义的效果模板。<br/>默认值:EffectType.DEFAULT |
42
43## useEffect<sup>18+</sup>
44
45useEffect(useEffect: Optional\<boolean>, effectType?: EffectType)
46
47用于设置组件是否应用<!--Del-->父级[EffectComponent](ts-container-effectcomponent-sys.md)或<!--DelEnd-->窗口定义的效果模板。与[useEffect<sup>14+</sup>](#useeffect)相比,useEffect参数新增了对undefined类型的支持。
48
49**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
50
51**系统能力:** SystemCapability.ArkUI.ArkUI.Full
52
53**参数:**
54
55| 参数名 | 类型 | 必填 | 说明 |
56| -------- | -------- | -------- | -------- |
57| useEffect | Optional\<boolean> | 是 | 控制组件是否应用<!--Del-->父级EffectComponent或<!--DelEnd-->窗口定义的效果模板。<br/>useEffect为true时表示应用<!--Del-->父级EffectComponent或<!--DelEnd-->窗口定义的效果模板。<br/>默认值:false<br/>当useEffect的值为undefined时,维持之前取值。 |
58| effectType | [EffectType](ts-universal-attributes-use-effect.md#effecttype14) | 否 | 设置组件应用<!--Del-->父级EffectComponent或<!--DelEnd-->窗口定义的效果模板。<br/>默认值:EffectType.DEFAULT|
59
60## EffectType<sup>14+</sup>
61
62使用效果模板种类的枚举值。
63
64**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。
65
66**系统能力:**  SystemCapability.ArkUI.ArkUI.Full
67
68| 名称     | 值   | 说明                   |
69| -------- | ---- | ---------------------- |
70| DEFAULT  | 0   | 使用<!--Del-->父级EffectComponent定义的<!--DelEnd-->效果模板进行定义。 |
71| WINDOW_EFFECT  | 1   | 使用窗口定义的效果模板进行定义。 |
72
73效果模板
74
75|  设备类型    | 模糊半径(单位: px)   | 饱和度                 |  亮度  |  颜色  |
76| -------- | ---- | ---------------------- | -------- | -------- |
77| 移动设备  | 0   | 0 | 0 | '#ffffffff'
78| 2in1设备:深色模式  | 80   | 1.5 | 1.0 | '#e52e3033'
79| 2in1设备:浅色模式  | 80   | 1.9 | 1.0 | '#e5ffffff'
80| Tablet设备  | 0   | 0 | 0 | '#ffffffff'
81
82<!--Del-->
83## 示例
84
85该示例主要通过背景模糊等特效进行绘制合并效果。
86
87<!--code_no_check-->
88
89```ts
90//Index.ets
91@Entry
92@Component
93struct Index {
94  @State isUse: boolean = true;
95
96  build() {
97    Stack() {
98      Image($r("app.media.mountain"))
99        .autoResize(true)
100      EffectComponent() {
101        Column({ space: 20 }) {
102           Column() {
103           }
104           .position({ x: 0, y: 0 })
105           .width(150)
106           .height(800)
107           .useEffect(this.isUse, EffectType.WINDOW_EFFECT)
108
109           Column() {
110           }
111           .position({ x: 200, y: 20 })
112           .width(150)
113           .height(300)
114           .useEffect(this.isUse, EffectType.DEFAULT)
115
116           Column() {
117           }
118           .position({ x: 400, y: 20 })
119           .width(150)
120           .height(300)
121           .useEffect(this.isUse)
122        }
123        .width('100%')
124        .height('100%')
125      }
126      .backgroundBlurStyle(BlurStyle.Thin)
127
128       Column() {
129       }
130        .position({ x: 600, y: 0 })
131        .width(150)
132        .height(800)
133        .useEffect(this.isUse, EffectType.WINDOW_EFFECT)
134
135      Row() {
136        Button('useEffect')
137        .margin(30)
138        .onClick(() => {
139          this.isUse = !this.isUse;
140        })
141      }
142      .position({ x: 300, y: 450 })
143    }
144    .backgroundColor(Color.Black)
145    .width('100%')
146  }
147}
148```
149
150![zh_image_useeffect_effecttype](figures/zh_image_useeffect_effecttype.png)
151<!--DelEnd-->