Android WMS——窗口动画触发及加载(十六)

        Android 窗口动画是 Android 系统动画的一种,当一个非 Activity 主窗口,非壁纸窗口添加或者移除的时候会触发 Android 窗口动画的流程,例如 Toast 的弹出或者移除的过程中就会触发窗口动画。

        我把窗口动画的执行流程大概分为以下几步:

  • 触发添加窗口动画
  • 加载对应的动画资源
  • 创建 leash,同时把执行动画的窗口容器 reparent 到 leash 上
  • 开始循环执行窗口动画
  • 动画结束,把执行动画的窗口重新 reparent 到该容器原来的父节点上。

一、触发添加窗口动画

        在 WMS 中最重要的函数 performSurfacePlacementNoTrace() 后期,会遍历一块屏幕上所有的窗口(WindowState),如果该 WindowState 有 surfece 的话,会调用到 WindowState.winAnimator.commitFinishDrawingLocked() 方法。

1、WindowStateAnimator

源码位置:/frameworks/base/services/core/java/com/android/server/wm/WindowStateAnimator.java

boolean commitFi

猜你喜欢

转载自blog.csdn.net/c19344881x/article/details/134183681