AgentSkillsCN

Launcher Animation分析

执行Launcher动画相关源码分析,覆盖手势动画、远程动画、图标动画、任务切换动画等场景,用于定位动画异常、构建调用链、还原动画时序,并输出可验证的源码证据。

中文原作
SKILL.md
--- frontmatter
name: Launcher Animation分析
description: 执行Launcher动画相关源码分析,覆盖手势动画、远程动画、图标动画、任务切换动画等场景,用于定位动画异常、构建调用链、还原动画时序,并输出可验证的源码证据。

Launcher Animation分析

描述

Launcher Animation分析技能专注于Android Launcher中各种动画效果的源码分析和流程追踪。该技能适用于手势动画、远程动画、图标动画、任务切换动画等场景的分析,提供从用户输入到动画渲染的完整调用链追踪。

使用场景

当需要执行以下任务时,应使用此技能:

  • 分析Launcher手势动画(上滑、下滑、侧滑等)
  • 分析远程动画与WindowManager Shell的交互流程
  • 分析图标动画和状态变化
  • 分析任务切换和最近任务动画
  • 定位动画卡顿、异常、不响应问题
  • 构建Launcher动画的完整调用链和时序图
  • 分析Launcher与SystemUI、WindowManager的跨进程动画协调
  • 分析Launcher动画

指令

1. 动画源码定位与模块分析

核心分析模块矩阵:

模块深度分析能力
LauncherGestureMonitor / RecentsAnimation / Taskbar / StateManager / Animator / AnimatorPlaybackController
SystemUIShell / Recents / StatusBar / Keyguard / Transition / Scene
WindowManagerWindowContainer / DisplayContent / Transition / BLAST / SurfaceControl
SurfaceFlingerTransaction / LayerTree / BufferQueue / Fence / VSYNC / CompositionEngine

上划进入Recents动画重点对象:

  1. 动画播放控制器:AnimatorPlaybackController - 控制动画播放进度和状态
  2. 动画容器:AnimatorPlaybackController.Holder - 动画容器管理
  3. 运行中动画容器:PendingAnimation - 每个动画的运行时容器
  4. 动画添加机制:PendingAnimation.add() - 向容器添加动画
  5. 手势状态跟踪:GestureStateTracker - 跟踪上划手势状态
  6. 远程动画控制:RecentsAnimationController - 管理远程动画执行

2. 调用链追踪

动画调用链构建步骤:

  1. 用户输入层:触摸事件 → 手势识别 → 动画触发
  2. Launcher层:动画控制器 → 状态管理 → 视图更新
  3. 系统层:远程动画 → WindowManager → 窗口过渡
  4. 渲染层:SurfaceControl → SurfaceFlinger → 显示输出

上划进入Recents动画详细调用链:

code
上划手势开始 → GestureStateTracker跟踪手势状态 →
├── GestureMonitor.onTouchEvent()处理触摸事件 →
├── RecentsAnimationController启动远程动画 →
├── AnimatorPlaybackController创建动画控制器 →
│   ├── AnimatorPlaybackController.Holder管理动画容器 →
│   ├── PendingAnimation创建运行中动画容器 →
│   └── PendingAnimation.add()添加具体动画效果 →
├── WindowManager处理窗口过渡动画 →
├── SurfaceFlinger渲染动画效果 →
└── 动画完成回调Launcher更新状态

关键组件交互流程:

  1. GestureStateTracker:实时跟踪上划手势的位移、速度和方向
  2. AnimatorPlaybackController:控制动画播放进度、暂停、恢复和取消
  3. PendingAnimation:管理运行中的动画集合,支持动画合并和同步
  4. 动画容器机制:通过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动画关键源码证据:

  1. AnimatorPlaybackController:动画播放进度控制、状态管理、生命周期控制
  2. PendingAnimation.add():动画添加机制、动画合并逻辑、同步控制
  3. GestureStateTracker:手势状态跟踪、与动画进度同步机制
  4. 动画容器管理:Holder模式实现、动画实例生命周期管理
  5. 远程动画协调:跨进程动画同步、状态一致性保证

示例

示例1:分析上划进入Recents动画

code
用户上划手势 → GestureMonitor.onTouchEvent() → 
├── GestureStateTracker跟踪手势状态 →
├── RecentsAnimationController启动远程动画 →
├── AnimatorPlaybackController创建动画控制器 →
│   ├── AnimatorPlaybackController.Holder创建动画容器 →
│   ├── PendingAnimation创建运行中动画容器 →
│   └── PendingAnimation.add()添加具体动画效果 →
├── WindowManager处理窗口过渡 →
└── SurfaceFlinger渲染动画效果

关键源码分析点:

  • AnimatorPlaybackController:分析动画进度控制和状态管理
  • PendingAnimation.add():分析动画添加和合并机制
  • GestureStateTracker:分析手势状态与动画进度的同步
  • 动画容器生命周期:分析Holder模式下的动画管理

示例2:分析远程动画交互

code
Launcher请求远程动画 → IRecentsAnimation.startRecentsActivity() →
├── WindowManager创建过渡动画 →
├── SystemUI处理动画执行 →
├── 跨进程Binder通信协调 →
└── 动画完成回调Launcher

示例3:分析图标动画卡顿

code
图标点击动画卡顿分析:
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.0
适用AOSP版本: 14+
核心分析范围: Launcher / SystemUI / WindowManager / SurfaceFlinger
新增重点对象: AnimatorPlaybackController / PendingAnimation / GestureStateTracker
输出格式: Markdown文档 + Mermaid图表 + 源码证据链