执行Launcher动画相关源码分析,覆盖手势动画、远程动画、图标动画、任务切换动画等场景,用于定位动画异常、构建调用链、还原动画时序,并输出可验证的源码证据。
Install
npx skillscat add yuchuangu85/launcher3/launcher-animation Install via the SkillsCat registry.
SKILL.md
Launcher Animation分析
描述
Launcher Animation分析技能专注于Android Launcher中各种动画效果的源码分析和流程追踪。该技能适用于手势动画、远程动画、图标动画、任务切换动画等场景的分析,提供从用户输入到动画渲染的完整调用链追踪。
使用场景
当需要执行以下任务时,应使用此技能:
- 分析Launcher手势动画(上滑、下滑、侧滑等)
- 分析远程动画与WindowManager Shell的交互流程
- 分析图标动画和状态变化
- 分析任务切换和最近任务动画
- 定位动画卡顿、异常、不响应问题
- 构建Launcher动画的完整调用链和时序图
- 分析Launcher与SystemUI、WindowManager的跨进程动画协调
- Launcher源码分析
指令
1. 动画源码定位与模块分析
核心分析模块矩阵:
| 模块 | 深度分析能力 |
|---|---|
| Launcher | GestureMonitor / RecentsAnimation / Taskbar / StateManager / Animator / AnimatorPlaybackController |
| SystemUI | Shell / Recents / StatusBar / Keyguard / Transition / Scene |
| WindowManager | WindowContainer / DisplayContent / Transition / BLAST / SurfaceControl |
| SurfaceFlinger | Transaction / LayerTree / BufferQueue / Fence / VSYNC / CompositionEngine |
上划进入Recents动画重点对象:
- 动画播放控制器:AnimatorPlaybackController - 控制动画播放进度和状态
- 动画容器:AnimatorPlaybackController.Holder - 动画容器管理
- 运行中动画容器:PendingAnimation - 每个动画的运行时容器
- 动画添加机制:PendingAnimation.add() - 向容器添加动画
- 手势状态跟踪:GestureStateTracker - 跟踪上划手势状态
- 远程动画控制:RecentsAnimationController - 管理远程动画执行
2. 调用链追踪
动画调用链构建步骤:
- 用户输入层:触摸事件 → 手势识别 → 动画触发
- Launcher层:动画控制器 → 状态管理 → 视图更新
- 系统层:远程动画 → WindowManager → 窗口过渡
- 渲染层:SurfaceControl → SurfaceFlinger → 显示输出
上划进入Recents动画详细调用链:
上划手势开始 → GestureStateTracker跟踪手势状态 →
├── GestureMonitor.onTouchEvent()处理触摸事件 →
├── RecentsAnimationController启动远程动画 →
├── AnimatorPlaybackController创建动画控制器 →
│ ├── AnimatorPlaybackController.Holder管理动画容器 →
│ ├── PendingAnimation创建运行中动画容器 →
│ └── PendingAnimation.add()添加具体动画效果 →
├── WindowManager处理窗口过渡动画 →
├── SurfaceFlinger渲染动画效果 →
└── 动画完成回调Launcher更新状态关键组件交互流程:
- GestureStateTracker:实时跟踪上划手势的位移、速度和方向
- AnimatorPlaybackController:控制动画播放进度、暂停、恢复和取消
- PendingAnimation:管理运行中的动画集合,支持动画合并和同步
- 动画容器机制:通过Holder模式管理多个动画实例的生命周期
3. 行为归因分析
动画异常归因方法:
- 输入延迟:分析InputDispatcher到Launcher的事件分发延迟
- 动画卡顿:检查Choreographer VSYNC信号和帧率
- 远程动画失败:追踪跨进程Binder调用和权限检查
- 内存问题:分析动画资源泄漏和GC影响
4. 系统时序建模
动画时序建模要素:
- VSYNC同步:HW-VSYNC → VSYNC-app → RenderThread → SurfaceFlinger
- 跨进程协调:Launcher进程 → SystemUI进程 → WindowManager进程
- 状态同步:动画状态机 → 窗口状态 → 系统状态
5. 证据链收集
关键源码证据类型:
- 动画控制器类:StateManager, Animator, GestureMonitor, AnimatorPlaybackController
- 动画容器类:AnimatorPlaybackController.Holder, PendingAnimation
- 远程调用接口:IRecentsAnimation, IRemoteTransition
- 系统集成点:WindowManager, SurfaceFlinger集成
- 性能监控点:Choreographer, FrameMetrics, Perfetto追踪
上划进入Recents动画关键源码证据:
- AnimatorPlaybackController:动画播放进度控制、状态管理、生命周期控制
- PendingAnimation.add():动画添加机制、动画合并逻辑、同步控制
- GestureStateTracker:手势状态跟踪、与动画进度同步机制
- 动画容器管理:Holder模式实现、动画实例生命周期管理
- 远程动画协调:跨进程动画同步、状态一致性保证
示例
示例1:分析上划进入Recents动画
用户上划手势 → GestureMonitor.onTouchEvent() →
├── GestureStateTracker跟踪手势状态 →
├── RecentsAnimationController启动远程动画 →
├── AnimatorPlaybackController创建动画控制器 →
│ ├── AnimatorPlaybackController.Holder创建动画容器 →
│ ├── PendingAnimation创建运行中动画容器 →
│ └── PendingAnimation.add()添加具体动画效果 →
├── WindowManager处理窗口过渡 →
└── SurfaceFlinger渲染动画效果关键源码分析点:
- AnimatorPlaybackController:分析动画进度控制和状态管理
- PendingAnimation.add():分析动画添加和合并机制
- GestureStateTracker:分析手势状态与动画进度的同步
- 动画容器生命周期:分析Holder模式下的动画管理
示例2:分析远程动画交互
Launcher请求远程动画 → IRecentsAnimation.startRecentsActivity() →
├── WindowManager创建过渡动画 →
├── SystemUI处理动画执行 →
├── 跨进程Binder通信协调 →
└── 动画完成回调Launcher示例3:分析图标动画卡顿
图标点击动画卡顿分析:
1. 检查Choreographer帧率数据
2. 分析IconAnimator动画状态机
3. 追踪SurfaceControl事务提交
4. 检查内存使用和GC影响工具协同
1. 源码分析工具
- SearchCodebase:快速定位动画相关源码
- Grep:精确搜索特定动画方法和类
- Read:详细阅读关键源码实现
2. 调试分析工具
- Perfetto:性能追踪和动画时序分析
- Systrace:系统级性能分析
- Layout Inspector:视图层级和动画状态检查
3. 文档输出工具
- Mermaid图表:绘制调用链和时序图
- 源码引用:提供精确的源码证据链
- 架构图:展示组件关系和交互流程
注意事项
1. 跨进程动画分析
- 注意Binder调用延迟和权限检查
- 分析跨进程状态同步机制
- 检查进程间通信的异常处理
2. 性能优化分析
- 关注动画资源管理和内存使用
- 分析VSYNC同步和帧率稳定性
- 检查动画合并和优化机制
3. 兼容性考虑
- 不同Android版本的动画实现差异
- OEM定制ROM的动画修改
- 硬件差异对动画性能的影响
技能版本: 2.1.0
适用AOSP版本: 16+
核心分析范围: Launcher / SystemUI / WindowManager / SurfaceFlinger
新增重点对象: AnimatorPlaybackController / PendingAnimation / GestureStateTracker
输出格式: Markdown文档 + Mermaid图表 + 源码证据链
最后更新: 2026-02-13