在Android中,View扮演着很重要的角色,简单说,View是Android在视觉上的呈现。在开发中,每时每刻都在和View打交道,常见的由Android提供使用的有:TextView,ImageView,ListView..等等。如果使用一些酷的效果,当然要我们自定义View了,在自定义View之前,先来简单记录下View的工作原理,帮助以后更好的理解自定义View的使用。
说道View原理,肯定要说道顶层的 ViewRootDecorView

一、ViewRoot

ViewRoot 对应于 ViewRootImpl 类,是连接WindowManager 和 DecorView 的纽带,View 的三大流程是通过 ViewRoot 来完成的。在 ActivityThread 中,当 Activity 对象被创建完毕后,会将 DecorView 添加到 Window 中,同时会创建 ViewRootImpl 对象,并将 ViewRootImpl 对象和 DecorView 建立关联。借图说明:

Android 自定义View(一)原理_第1张图片

View 的绘制流程是从 ViewRoot 的 performTraversals 方法开始的,经过 Measure、layout 和 draw 三个过程才能将一个View绘制出来,performTraversals 的大致流程:

Android 自定义View(一)原理_第2张图片

图所示,performTraversals 会依次调用 ViewGroup 的 三个方法,这个三个方法分别完成 View 的三个方法,反复完成整个View树的遍历。

二、DecorView

DecorView 作为 顶级 View,它本质上是一个FrameLayout,DecorView有唯一一个子View,它是一个垂直LinearLayout,包含两个子元素,一个是TitleView(ActionBar的容器),另一个是ContentView(窗口内容的容器)。关于ContentView,它是一个FrameLayout(android.R.id.content),我们平常用的setContentView就是设置它的子View。上图还表达了每个Activity都与一个Window(具体来说是PhoneWindow)相关联,用户界面则由Window所承载。

总结

主要说了View的工作绘制原理,有图和些简单描述。
Android 自定义View篇:

  • Android 自定义View(一)原理
  • Android 自定义View(二)方法分析

更多相关文章

  1. Android系统原理与开发要点详解
  2. Android与Unity交互调用mUnityPlayer.quit()方法退出返回上一个A
  3. android 带你从源码的角度解析Scroller的滚动实现原理
  4. Unity3D调用android方法(非插件方式)
  5. Android事件处理方法总结-Handler消息处理

随机推荐

  1. Android系统架构特点及优劣分析
  2. Android入门教程(五)之------第一个Andro
  3. 3-14 servlet 传出对象给 Android
  4. Android网络游戏之神农诀项目开发--视频
  5. Android中解析xml
  6. Android(安卓)Studio调用QT for Android
  7. Android(安卓)进度暂停和继续
  8. android 遗忘很久的android 渐变色
  9. [Android(安卓)Studio系列(五)] Android(
  10. Android应用程序与SurfaceFlinger服务的