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