UI 与渲染
2026/9/14大约 3 分钟
UI 与渲染
View 体系、渲染原理与自定义绘制,共 37 篇原创文章,从绘制流程到渲染管线的完整知识链。
View 体系
| 模块 | 说明 | 入口 |
|---|---|---|
| View 绘制流程 | measure / layout / draw | View |
| 事件分发机制 | dispatchTouchEvent 链条 | 事件分发 |
| 自定义 View | 绘制与交互实战 | 自定义 View |
| 动画机制 | 属性动画 / 转场动画 | 动画 |
| 布局优化 | ConstraintLayout / include / 屏幕适配 | 布局优化 |
| Window 机制 | Window / WindowManager | Window |
| Bitmap | 图片解码与压缩 | Bitmap |
| 渲染原理 | VSYNC / Choreographer / 硬件加速 | 渲染原理 |
学习路径
View 体系基础 → 绘制流程 → 事件分发 → 自定义 View → 动画 → 渲染原理 → 性能优化声明式 UI 开发见 Jetpack Compose。
全部文章导航
View 体系
- View 绘制流程详解:measure / layout / draw 三大流程
- View 与 ViewGroup 的关系:职责链与组合模式
- MeasureSpec 完全解析:UNSPECIFIED / EXACTLY / AT_MOST
- RecyclerView 优化与 ListView 对比
- RecyclerView 源码解析:五级缓存 / 预取 / DiffUtil
- WebView 使用与优化
- ViewPager2 使用指南:与 ViewPager 对比、RecyclerView 架构、懒加载与预加载
事件分发
- 事件分发机制详解:dispatchTouchEvent 链条
- 事件冲突解决方案:滑动冲突的拦截与处理
- 输入系统与触摸事件分发:InputReader / InputDispatcher / ACTION_CANCEL
- Android 坐标系与手势:View/屏幕坐标换算、MotionEvent 封装、手势判定
- 多指触控与手势识别:多点触控事件流、PointerIndex 管理、缩放/旋转手势实现
自定义 View
- 自定义 View 实战:绘制 / 测量 / 交互
- 自定义 ViewGroup
- VelocityTracker / GestureDetector / Scroller:触摸辅助类
- Canvas 与 Path 绘制艺术:贝塞尔曲线 / 渐变 / 文字绘制
- 自定义属性与 XML 解析:attrs.xml 定义、TypedArray 获取、自定义 View 与主题联动
动画机制
- 属性动画机制:ValueAnimator / ObjectAnimator
- 补间动画与插值器:插值器 / 估值器原理
- 转场动画与共享元素:Transition 框架 / 共享元素
- 插值器与估值器源码解析:加速/回弹/周期插值器、TypeEvaluator 自定义、动画刷新机制
布局优化
- 布局优化实战:include / merge / ConstraintLayout
- 屏幕适配方案:dp / sp / 头条适配 / 刘海屏
- ConstraintLayout 完全指南:约束体系 / 链 / 辅助线 / 性能优势
- 布局方案选型:五大布局对比、性能差异、嵌套层级与面试常问
Window 机制
- Window 机制详解:Window / WindowManager / 创建过程
- WindowManager 深入与悬浮窗:addView 源码链 / 悬浮窗实战
- 系统栏适配与沉浸式:状态栏/导航栏深浅色、WindowInsets、刘海屏与全屏适配
- Dialog / Toast / PopupWindow:三种浮层对比、Window Token 限制、Android 12 弹窗限制
Bitmap
- Bitmap 详解与图片压缩:采样压缩 / 内存回收 / 三级缓存
- Glide 源码解析:生命周期绑定 / 三级缓存 / Transformations
- Bitmap 压缩与内存优化:采样率 / 质量 / 颜色格式、inBitmap 复用、大图分块加载
渲染原理
- 渲染原理与硬件加速:VSYNC / 渲染管线 / 16.6ms 预算
- Choreographer 与帧同步:Vsync 回调链、FrameCallback、掉帧统计与卡顿定位
- 硬件加速渲染原理:GPU 渲染管线、DisplayList 录制与回放、Layer 与离屏缓冲
- SurfaceView 与 TextureView:双缓冲原理、与主线程渲染隔离、视频播放选型