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