Android 自定义View(一)原理

在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 建立关联。借图说明:

这里写图片描述

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

这里写图片描述

图所示,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篇:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值