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<WindowAnimationFinishedCallback>): void 77 78最小化动画目标窗口,并返回动画完成的回调。使用callback异步回调 79 80**系统能力:** SystemCapability.WindowManager.WindowManager.Core 81 82**参数:** 83 84| 参数名 | 类型 | 必填 | 说明 | 85| -------- | -------- | -------- | -------- | 86| windowTarget | [WindowAnimationTarget](#windowanimationtarget) | 是 | 动画目标窗口。| 87| callback | AsyncCallback<[WindowAnimationFinishedCallback](#windowanimationfinishedcallback)> | 是 | 回调函数。当最小化动画目标窗口成功,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<WindowAnimationFinishedCallback> 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<[WindowAnimationFinishedCallback](#windowanimationfinishedcallback)> | 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<WindowAnimationTarget>): void 351 352动画目标窗口更新时的回调 353 354**系统能力:** SystemCapability.WindowManager.WindowManager.Core 355 356| 参数名 | 类型 | 必填 | 说明 | 357| -------------------- | ------------------------------- | ---- | ---------------- | 358| fullScreenWindowTarget | [WindowAnimationTarget](#windowanimationtarget) | 是 | 全屏状态的动画目标窗口。| 359| floatingWindowTargets| Array<[WindowAnimationTarget](#windowanimationtarget)> | 是 | 悬浮状态的动画目标窗口。 | 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 | 是 |动画目标窗口的圆角大小。 |