• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.animation.windowAnimationManager (窗口动画管理)
2
3窗口动画管理器,可以监听应用启动退出时应用的动画窗口,提供启动退出过程中控件动画和应用窗口联动动画能力。
4
5>  **说明:**
6>  该组件从API Version 9开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
7>
8>  本模块接口为系统接口。
9
10## 导入模块
11
12```js
13import windowAnimationManager from '@ohos.animation.windowAnimationManager'
14```
15
16## windowAnimationManager.setController
17
18setController(controller: WindowAnimationController): void
19
20设置窗口动画控制器。窗口动画控制器的说明请参考[WindowAnimationController](#windowanimationcontroller)。
21
22在使用windowAnimationManager的其他接口前,需要预先调用本接口设置窗口动画控制器。
23
24**系统能力:** SystemCapability.WindowManager.WindowManager.Core
25
26**参数:**
27
28| 参数名 | 类型 | 必填 | 说明 |
29| -------- | -------- | -------- | -------- |
30| controller | [WindowAnimationController](#windowanimationcontroller) | 是 | 窗口动画的控制器。|
31
32**示例:**
33
34```js
35let controller = {
36    onStartAppFromLauncher(startingWindowTarget: windowAnimationManager.WindowAnimationTarget, finishCallback: windowAnimationManager.WindowAnimationFinishedCallback): void {
37        console.log('onStartAppFromLauncher, the startingWindowTarget is: ' + startingWindowTarget);
38        finishCallback.onAnimationFinish();
39	  },
40    onStartAppFromRecent(startingWindowTarget: windowAnimationManager.WindowAnimationTarget, finishCallback: windowAnimationManager.WindowAnimationFinishedCallback): void {
41        console.log('onStartAppFromRecent, the startingWindowTarget is: ' + startingWindowTarget);
42        finishCallback.onAnimationFinish();
43    },
44    onStartAppFromOther(startingWindowTarget: windowAnimationManager.WindowAnimationTarget, finishCallback: windowAnimationManager.WindowAnimationFinishedCallback): void {
45        console.log('onStartAppFromOther, the startingWindowTarget is: ' + startingWindowTarget);
46        finishCallback.onAnimationFinish();
47    },
48    onAppTransition(fromWindowTarget: windowAnimationManager.WindowAnimationTarget, toWindowTarget: WindowAnimationTarget, finishCallback: windowAnimationManager.WindowAnimationFinishedCallback): void {
49        console.log('onAppTransition, the fromWindowTarget is: ' + fromWindowTarget);
50        console.log('onAppTransition, the toWindowTarget is: ' + toWindowTarget);
51        finishCallback.onAnimationFinish();
52    },
53    onMinimizeWindow(minimizingWindowTarget: windowAnimationManager.WindowAnimationTarget, finishCallback: windowAnimationManager.WindowAnimationFinishedCallback): void {
54        console.log('onMinimizeWindow, the minimizingWindowTarget is: ' + minimizingWindowTarget);
55        finishCallback.onAnimationFinish();
56    },
57    onCloseWindow(closingWindowTarget: windowAnimationManager.WindowAnimationTarget, finishCallback: windowAnimationManager.WindowAnimationFinishedCallback): void {
58        console.log('onCloseWindow, the closingWindowTarget is: ' + closingWindowTarget);
59        finishCallback.onAnimationFinish();
60    },
61    onScreenUnlock(finishCallback: windowAnimationManager.WindowAnimationFinishedCallback): void {
62        console.log('onScreenUnlock called');
63        finishCallback.onAnimationFinish();
64    },
65    onWindowAnimationTargetsUpdate(fullScreenWindowTarget: windowAnimationManager.WindowAnimationTarget, floatingWindowTargets: Array<windowAnimationManager.WindowAnimationTarget>): void {
66        console.log('onWindowAnimationTargetsUpdate, the fullScreenWindowTarget is: ' + fullScreenWindowTarget);
67        console.log('onWindowAnimationTargetsUpdate, the floatingWindowTargets are: ' + floatingWindowTargets);
68    }
69}
70
71windowAnimationManager.setController(controller)
72```
73
74## windowAnimationManager.minimizeWindowWithAnimation
75
76minimizeWindowWithAnimation(windowTarget: WindowAnimationTarget, callback: AsyncCallback&lt;WindowAnimationFinishedCallback&gt;): void
77
78最小化动画目标窗口,并返回动画完成的回调。使用callback异步回调
79
80**系统能力:** SystemCapability.WindowManager.WindowManager.Core
81
82**参数:**
83
84| 参数名 | 类型 | 必填 | 说明 |
85| -------- | -------- | -------- | -------- |
86| windowTarget | [WindowAnimationTarget](#windowanimationtarget) | 是 | 动画目标窗口。|
87| callback | AsyncCallback&lt;[WindowAnimationFinishedCallback](#windowanimationfinishedcallback)&gt; | 是 | 回调函数。当最小化动画目标窗口成功,err为undefined,data为获取到的WindowAnimationFinishedCallback;否则返回err.code为-1,data为undefined。|
88
89**示例:**
90
91```js
92let target: WindowAnimationTarget = undefined;
93let controller = {
94    onStartAppFromLauncher(startingWindowTarget: windowAnimationManager.WindowAnimationTarget, finishCallback: windowAnimationManager.WindowAnimationFinishedCallback): void {
95        console.log('onStartAppFromLauncher, the startingWindowTarget is: ' + startingWindowTarget);
96        target = startingWindowTarget;
97        finishCallback.onAnimationFinish();
98	  },
99    onStartAppFromRecent(startingWindowTarget: windowAnimationManager.WindowAnimationTarget, finishCallback: windowAnimationManager.WindowAnimationFinishedCallback): void {
100        console.log('onStartAppFromRecent, the startingWindowTarget is: ' + startingWindowTarget);
101        target = startingWindowTarget;
102        finishCallback.onAnimationFinish();
103    },
104    onStartAppFromOther(startingWindowTarget: windowAnimationManager.WindowAnimationTarget, finishCallback: windowAnimationManager.WindowAnimationFinishedCallback): void {
105        console.log('onStartAppFromOther, the startingWindowTarget is: ' + startingWindowTarget);
106        target = startingWindowTarget;
107        finishCallback.onAnimationFinish();
108    },
109    onAppTransition(fromWindowTarget: windowAnimationManager.WindowAnimationTarget, toWindowTarget: WindowAnimationTarget, finishCallback: windowAnimationManager.WindowAnimationFinishedCallback): void {
110        console.log('onAppTransition, the fromWindowTarget is: ' + fromWindowTarget);
111        console.log('onAppTransition, the toWindowTarget is: ' + toWindowTarget);
112        target = toWindowTarget;
113        finishCallback.onAnimationFinish();
114    },
115    onMinimizeWindow(minimizingWindowTarget: windowAnimationManager.WindowAnimationTarget, finishCallback: windowAnimationManager.WindowAnimationFinishedCallback): void {
116        console.log('onMinimizeWindow, the minimizingWindowTarget is: ' + minimizingWindowTarget);
117        target = minimizingWindowTarget;
118        finishCallback.onAnimationFinish();
119    },
120    onCloseWindow(closingWindowTarget: windowAnimationManager.WindowAnimationTarget, finishCallback: windowAnimationManager.WindowAnimationFinishedCallback): void {
121        console.log('onCloseWindow, the closingWindowTarget is: ' + closingWindowTarget);
122        target = closingWindowTarget;
123        finishCallback.onAnimationFinish();
124    },
125    onScreenUnlock(finishCallback: windowAnimationManager.WindowAnimationFinishedCallback): void {
126        console.log('onScreenUnlock called');
127        finishCallback.onAnimationFinish();
128    },
129    onWindowAnimationTargetsUpdate(fullScreenWindowTarget: windowAnimationManager.WindowAnimationTarget, floatingWindowTargets: Array<windowAnimationManager.WindowAnimationTarget>): void {
130        console.log('onWindowAnimationTargetsUpdate, the fullScreenWindowTarget is: ' + fullScreenWindowTarget);
131        console.log('onWindowAnimationTargetsUpdate, the floatingWindowTargets are: ' + floatingWindowTargets);
132        target = fullScreenWindowTarget;
133    }
134}
135
136windowAnimationManager.setController(controller)
137
138let finishedCallback: windowAnimationManager.WindowAnimationFinishedCallback = undefined;
139windowAnimationManager.minimizeWindowWithAnimation(target, (err, data) => {
140    if (err) {
141        console.error('Failed to minimize the window target. Cause: ' + JSON.stringify(err));
142        return;
143    }
144    finishedCallback = data;
145
146    // 在收到回调后,需要开始进行窗口动画,在窗口动画结束后,调用onAnimationFinish回调
147    finishedCallback.onAnimationFinish();
148});
149```
150
151## windowAnimationManager.minimizeWindowWithAnimation
152
153minimizeWindowWithAnimation(windowTarget: WindowAnimationTarget): Promise&lt;WindowAnimationFinishedCallback&gt;
154
155最小化动画目标窗口,并返回动画完成的回调。使用Promise异步回调。
156
157**系统能力:** SystemCapability.WindowManager.WindowManager.Core
158
159**参数:**
160
161| 参数名 | 类型 | 必填 | 说明 |
162| -------- | -------- | -------- | -------- |
163| windowTarget | [WindowAnimationTarget](#windowanimationtarget) | 是 | 动画目标窗口。|
164
165**返回值:**
166
167| 类型                             | 说明                                    |
168| -------------------------------- | --------------------------------------- |
169| Promise&lt;[WindowAnimationFinishedCallback](#windowanimationfinishedcallback)&gt; | Promise对象,返回动画完成的回调。 |
170
171
172**示例:**
173
174```js
175let target: WindowAnimationTarget = undefined;
176let controller = {
177    onStartAppFromLauncher(startingWindowTarget: windowAnimationManager.WindowAnimationTarget, finishCallback: windowAnimationManager.WindowAnimationFinishedCallback): void {
178        console.log('onStartAppFromLauncher, the startingWindowTarget is: ' + startingWindowTarget);
179        finishCallback.onAnimationFinish();
180	  },
181    onStartAppFromRecent(startingWindowTarget: windowAnimationManager.WindowAnimationTarget, finishCallback: windowAnimationManager.WindowAnimationFinishedCallback): void {
182        console.log('onStartAppFromRecent, the startingWindowTarget is: ' + startingWindowTarget);
183        finishCallback.onAnimationFinish();
184    },
185    onStartAppFromOther(startingWindowTarget: windowAnimationManager.WindowAnimationTarget, finishCallback: windowAnimationManager.WindowAnimationFinishedCallback): void {
186        console.log('onStartAppFromOther, the startingWindowTarget is: ' + startingWindowTarget);
187        finishCallback.onAnimationFinish();
188    },
189    onAppTransition(fromWindowTarget: windowAnimationManager.WindowAnimationTarget, toWindowTarget: WindowAnimationTarget, finishCallback: windowAnimationManager.WindowAnimationFinishedCallback): void {
190        console.log('onAppTransition, the fromWindowTarget is: ' + fromWindowTarget);
191        console.log('onAppTransition, the toWindowTarget is: ' + toWindowTarget);
192        finishCallback.onAnimationFinish();
193    },
194    onMinimizeWindow(minimizingWindowTarget: windowAnimationManager.WindowAnimationTarget, finishCallback: windowAnimationManager.WindowAnimationFinishedCallback): void {
195        console.log('onMinimizeWindow, the minimizingWindowTarget is: ' + minimizingWindowTarget);
196        finishCallback.onAnimationFinish();
197    },
198    onCloseWindow(closingWindowTarget: windowAnimationManager.WindowAnimationTarget, finishCallback: windowAnimationManager.WindowAnimationFinishedCallback): void {
199        console.log('onCloseWindow, the closingWindowTarget is: ' + closingWindowTarget);
200        finishCallback.onAnimationFinish();
201    },
202    onScreenUnlock(finishCallback: windowAnimationManager.WindowAnimationFinishedCallback): void {
203        console.log('onScreenUnlock called');
204        finishCallback.onAnimationFinish();
205    },
206    onWindowAnimationTargetsUpdate(fullScreenWindowTarget: windowAnimationManager.WindowAnimationTarget, floatingWindowTargets: Array<windowAnimationManager.WindowAnimationTarget>): void {
207        console.log('onWindowAnimationTargetsUpdate, the fullScreenWindowTarget is: ' + fullScreenWindowTarget);
208        console.log('onWindowAnimationTargetsUpdate, the floatingWindowTargets are: ' + floatingWindowTargets);
209    }
210}
211
212windowAnimationManager.setController(controller)
213
214let promise = windowAnimationManager.minimizeWindowWithAnimation(target);
215promise.then((data) => {
216    data.onAnimationFinish();
217}).catch((err)=>{
218    console.error('Failed to minimize the window target. Cause: ' + JSON.stringify(err));
219    return;
220});
221```
222
223## WindowAnimationController
224
225窗口动画控制器。在创建一个WindowAnimationController对象时,需要实现其中的所有回调函数。
226
227**系统能力:** SystemCapability.WindowManager.WindowManager.Core
228
229### onStartAppFromLauncher
230
231onStartAppFromLauncher(startingWindowTarget: WindowAnimationTarget,finishCallback: WindowAnimationFinishedCallback): void
232
233从桌面启动应用时的回调。
234
235**系统能力:** SystemCapability.WindowManager.WindowManager.Core
236
237| 参数名               | 类型                                                         | 必填 | 说明               |
238| -------------------- | ------------------------------------------------------------ | ---- | ------------------ |
239| startingWindowTarget | [WindowAnimationTarget](#windowanimationtarget)              | 是   | 动画目标窗口。     |
240| finishCallback       | [WindowAnimationFinishedCallback](#windowanimationfinishedcallback) | 是   | 动画完成后的回调。 |
241
242**示例:**
243
244请参考[windowAnimationManager.setController](#windowanimationmanagersetcontroller)的示例代码。
245
246### onStartAppFromRecent
247
248onStartAppFromRecent(startingWindowTarget: WindowAnimationTarget,finishCallback:WindowAnimationFinishedCallback): void
249
250从最近任务列表启动应用时的回调。
251
252**系统能力:** SystemCapability.WindowManager.WindowManager.Core
253
254| 参数名               | 类型                                                         | 必填 | 说明               |
255| -------------------- | ------------------------------------------------------------ | ---- | ------------------ |
256| startingWindowTarget | [WindowAnimationTarget](#windowanimationtarget)              | 是   | 动画目标窗口。     |
257| finishCallback       | [WindowAnimationFinishedCallback](#windowanimationfinishedcallback) | 是   | 动画完成后的回调。 |
258
259**示例:**
260
261请参考[windowAnimationManager.setController](#windowanimationmanagersetcontroller)的示例代码。
262
263### onStartAppFromOther
264
265onStartAppFromOther(startingWindowTarget: WindowAnimationTarget,finishCallback: WindowAnimationFinishedCallback): void
266
267从除了桌面和最近任务列表以外其他地方启动应用时的回调。
268
269**系统能力:** SystemCapability.WindowManager.WindowManager.Core
270
271| 参数名               | 类型                                                         | 必填 | 说明               |
272| -------------------- | ------------------------------------------------------------ | ---- | ------------------ |
273| startingWindowTarget | [WindowAnimationTarget](#windowanimationtarget)              | 是   | 动画目标窗口。     |
274| finishCallback       | [WindowAnimationFinishedCallback](#windowanimationfinishedcallback) | 是   | 动画完成后的回调。 |
275
276**示例:**
277
278请参考[windowAnimationManager.setController](#windowanimationmanagersetcontroller)的示例代码。
279
280### onAppTransition
281
282onAppTransition(fromWindowTarget: WindowAnimationTarget, toWindowTarget: WindowAnimationTarget,finishCallback: WindowAnimationFinishedCallback): void
283
284应用转场时的回调。
285
286**系统能力:** SystemCapability.WindowManager.WindowManager.Core
287
288| 参数名               | 类型                            | 必填 | 说明             |
289| -------------------- | ------------------------------- | ---- | ---------------- |
290| fromWindowTarget | [WindowAnimationTarget](#windowanimationtarget)           | 是   | 转场前的动画窗口。 |
291| toWindowTarget       | [WindowAnimationTarget](#windowanimationtarget) | 是   | 转场后的动画窗口。 |
292| finishCallback | [WindowAnimationFinishedCallback](#windowanimationfinishedcallback) | 是   | 动画完成后的回调。 |
293
294**示例:**
295
296请参考[windowAnimationManager.setController](#windowanimationmanagersetcontroller)的示例代码。
297
298### onMinimizeWindow
299
300onMinimizeWindow(minimizingWindowTarget: WindowAnimationTarget,finishCallback: WindowAnimationFinishedCallback): void
301
302最小化窗口时的回调。
303
304**系统能力:** SystemCapability.WindowManager.WindowManager.Core
305
306| 参数名               | 类型                            | 必填 | 说明             |
307| -------------------- | ------------------------------- | ---- | ---------------- |
308| minimizingWindowTarget | [WindowAnimationTarget](#windowanimationtarget)           | 是   | 动画目标窗口。    |
309| finishCallback       | [WindowAnimationFinishedCallback](#windowanimationfinishedcallback) | 是   | 动画完成后的回调。 |
310
311**示例:**
312
313请参考[windowAnimationManager.setController](#windowanimationmanagersetcontroller)的示例代码。
314
315### onCloseWindow
316
317onCloseWindow(closingWindowTarget: WindowAnimationTarget,finishCallback: WindowAnimationFinishedCallback): void
318
319关闭窗口时的回调。
320
321**系统能力:** SystemCapability.WindowManager.WindowManager.Core
322
323| 参数名               | 类型                            | 必填 | 说明             |
324| -------------------- | ------------------------------- | ---- | ---------------- |
325| closingWindowTarget | [WindowAnimationTarget](#windowanimationtarget)           | 是   | 动画目标窗口。    |
326| finishCallback       | [WindowAnimationFinishedCallback](#windowanimationfinishedcallback) | 是   | 动画完成后的回调。 |
327
328**示例:**
329
330请参考[windowAnimationManager.setController](#windowanimationmanagersetcontroller)的示例代码。
331
332### onScreenUnlock
333
334onScreenUnlock(finishCallback: [WindowAnimationFinishedCallback](#windowanimationfinishedcallback)): void
335
336屏幕解锁时的回调。
337
338**系统能力:** SystemCapability.WindowManager.WindowManager.Core
339
340| 参数名         | 类型                                                         | 必填 | 说明               |
341| -------------- | ------------------------------------------------------------ | ---- | ------------------ |
342| finishCallback | [WindowAnimationFinishedCallback](#windowanimationfinishedcallback) | 是   | 动画完成后的回调。 |
343
344**示例:**
345
346请参考[windowAnimationManager.setController](#windowanimationmanagersetcontroller)的示例代码。
347
348### onWindowAnimationTargetsUpdate
349
350onWindowAnimationTargetsUpdate(fullScreenWindowTarget: WindowAnimationTarget, floatingWindowTargets: Array&lt;WindowAnimationTarget&gt;): void
351
352动画目标窗口更新时的回调
353
354**系统能力:** SystemCapability.WindowManager.WindowManager.Core
355
356| 参数名               | 类型                            | 必填 | 说明             |
357| -------------------- | ------------------------------- | ---- | ---------------- |
358| fullScreenWindowTarget | [WindowAnimationTarget](#windowanimationtarget) | 是   | 全屏状态的动画目标窗口。|
359| floatingWindowTargets| Array&lt;[WindowAnimationTarget](#windowanimationtarget)&gt; | 是   | 悬浮状态的动画目标窗口。 |
360
361**示例:**
362
363请参考[windowAnimationManager.setController](#windowanimationmanagersetcontroller)的示例代码。
364
365## WindowAnimationFinishedCallback
366动画完成后的回调。
367
368### onAnimationFinish
369
370onAnimationFinish():void
371
372结束本次动画。
373
374**系统能力:** SystemCapability.WindowManager.WindowManager.Core
375
376**示例:**
377
378请参考[windowAnimationManager.setController](#windowanimationmanagersetcontroller)的示例代码。
379
380## WindowAnimationTarget
381动画目标窗口,用来实现动画。
382
383**系统能力:** SystemCapability.WindowManager.WindowManager.Core
384
385| 名称      | 类型     | 必填 | 说明 |
386| ------- | ------ | ------ | ----------------------- |
387| bundleName  | string | 是 |动画目标窗口所对应的包名。 |
388| abilityName | string | 是 |动画目标窗口所对应的Ability名称。 |
389| windowBounds | [RRect](#rrect) | 是 |动画目标窗口所对应的实际大小。 |
390| missionId  | number | 是 |任务ID,多任务中用于与ability进行匹配。|
391
392## RRect
393圆角矩形。
394
395**系统能力:** SystemCapability.WindowManager.WindowManager.Core
396
397| 名称      | 类型     | 必填 | 说明 |
398| ------- | ------ | ------|----------------------- |
399| left  | number | 是 |动画目标窗口左上角相对于屏幕的横坐标。 |
400| top | number | 是 |动画目标窗口左上角相对于屏幕的纵坐标。 |
401| width | number | 是 |动画目标窗口的宽度大小。 |
402| height | number | 是 |动画目标窗口的高度大小。 |
403| radius | number | 是 |动画目标窗口的圆角大小。 |