launcher-animation | Skill Performance & Reviews | TopRankSkills

TopRank Skills

Home / Skills / tools / launcher-animation

launcher-animation

maintained by yuchuangu85

star 703 account_tree 180 verified_user MIT License
bolt View GitHub

name: Launcher Animation分析 description: 执行Launcher动画相关源码分析,覆盖手势动画、远程动画、图标动画、任务切换动画等场景,用于定位动画异常、构建调用链、还原动画时序,并输出可验证的源码证据。 version: 2.1.0 author: AOSP Frameworks Team last_updated: 2026-02-13

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动画重点对象:

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

2. 调用链追踪

动画调用链构建步骤:

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

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

上划手势开始 → 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动画

用户上划手势 → 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

chat Comments (0)

chat_bubble_outline

No comments yet. Be the first to share your thoughts!

Skill Details

GitHub Stars 703
GitHub Forks 180
Created Mar 2026
Last Updated 3个月前
tools tools debugging

Related Skills

fabric
chevron_right
typescript-expert
chevron_right
break-loop
chevron_right
burp-suite
chevron_right
page-behavior-audit
chevron_right

Build your own?

Join 12,000+ developers contributing to the Claude ecosystem.