【Android应用开发技术:用户界面】用户界面基本原理

作者:郭孝星
微博:郭孝星的新浪微博
邮箱:[email protected]
博客:http://blog.csdn.net/allenwells
Github:https://github.com/AllenWells

【Android应用开发技术:用户界面】章节列表

用户界面架构如下所示:

【Android应用开发技术:用户界面】用户界面基本原理_第1张图片

窗口结构

ViewRootImpl:虚拟根View,用来控制窗口渲染,以及与WindowManagerService和SurfaceFlinger通信。
DecorView:真正的根View。
ContentView:描述窗口的主题风格。

Window与Activity的关系

【Android应用开发技术:用户界面】用户界面基本原理_第2张图片

Activity对应的Window实际上是一个PhoneWindow

【Android应用开发技术:用户界面】用户界面基本原理_第3张图片
Activity/Window上下文

【Android应用开发技术:用户界面】用户界面基本原理_第4张图片

虚拟根View:ViewRootImpl

【Android应用开发技术:用户界面】用户界面基本原理_第5张图片
窗口绘图表面:Surface

【Android应用开发技术:用户界面】用户界面基本原理_第6张图片

窗口标志:W

【Android应用开发技术:用户界面】用户界面基本原理_第7张图片
窗口会话:Session

【Android应用开发技术:用户界面】用户界面基本原理_第8张图片

窗口视图:View

【Android应用开发技术:用户界面】用户界面基本原理_第9张图片

Android应用UI的绘制过程
【Android应用开发技术:用户界面】用户界面基本原理_第10张图片

软件渲染过程

【Android应用开发技术:用户界面】用户界面基本原理_第11张图片

硬件渲染过程

【Android应用开发技术:用户界面】用户界面基本原理_第12张图片

Display List:缓存绘制命令buffer,当View的某些属性发生改变时,只需要修改相应buffer中的属性即可,而无需再对整个View进行重绘。

Android应用UI的绘制时机

Without vsync - jank
【Android应用开发技术:用户界面】用户界面基本原理_第13张图片

with vsync

【Android应用开发技术:用户界面】用户界面基本原理_第14张图片
with vsync and double buffering

【Android应用开发技术:用户界面】用户界面基本原理_第15张图片
with vsync and double buffering – jank

【Android应用开发技术:用户界面】用户界面基本原理_第16张图片
with vsync and triple buffering

【Android应用开发技术:用户界面】用户界面基本原理_第17张图片
Android系统的vsync实现

SurfaceFlinger内部维护有一个EventThread,用来监听

资源管理框架

【Android应用开发技术:用户界面】用户界面基本原理_第18张图片

你可能感兴趣的:(安卓技术,-,应用开发)