Skip to content

Latest commit

 

History

History
54 lines (28 loc) · 2.82 KB

File metadata and controls

54 lines (28 loc) · 2.82 KB

Android视图层源码分析

这个系列的文章只是大致了解一下Android视图层的工作原理, 并不会深入去探讨源码中的某个点, 毕竟整个视图层过于复杂,如果没有原因的去抓住分析某个细节并没有太大的意义。

UI视图的渲染原理

Window是Android提供的用来构建UI的类,它是承载UI的基本单元。我们在正常开发中一般不会对他直接操作,不过我们所使用的Activity/Dialog等UI的展示都是依托于Window。 所以想要深入分析Android UI的展示原理,其实沿着Window这条线就可以了(目前Android Framework所提供的唯一Window实现类是PhoneWindow), 首先我们通过剖析Window的组成来大致了解一下Window:

深入剖析Window组成

上面这篇文章只是简单的讲了Window的添加过程和ActivityPhoneWindow的UI组成结构。那Window的UI到底是怎么绘制的呢?

其实是通过Surface来显示的。每一个窗口都有一个自己的Surface,可以把它理解为一块画布,应用可以通过CanvasOpenGL在上面作画。Surface的具体显示由SurfaceFlinger负责完成。SurfaceFlinger可以 将多块Surface的内容按照特定的顺序(Z-order)进行混合并输出到FrameBuffer,从而显示出用户所见到的UI。所以下面我们要好好研究一下Surface,首先看一下它是怎么创建的:

Android的UI显示原理之Surface的创建

视图的基本承载单元Surface已经准备完毕,那么怎么渲染一个Surface呢?

Android的UI显示原理之Surface的渲染

上面3篇文章中的源码分析几乎包含了整个视图层源码的所有关键对象,下面总结一下这3篇文章:

Android的UI显示原理总结

UI视图的用户交互事件处理原理

触摸事件原理分析

下面这篇文章分析一下: 触摸事件怎么产生和收集的? Activity.dispatchTouchEvent()是怎么调用到的?

Android触摸事件全过程分析

最基本的事件分发流程还是要过一遍的:

View事件传递机制源码走查

绘制优化相关

GPU 与 CPU

Android Bitmap变迁与原理解析(4.x-8.x)

Android GPU呈现模式原理及卡顿掉帧浅析

硬件加速 & OpenGL

什么是OpenGL

理解Android硬件加速原理(上)

理解Android硬件加速原理(下)