读书笔记:Android开发艺术探索之第4章 View的工作原理
2017-07-24 16:00
309 查看
1ViewRoot的对应实现类ViewRootImpl,它是连接WindowsManager和DecorView的纽带,
ActivityThread创建完Activity,将DecorView添加到Window中通过ViewRootImpl对象和DecorView建立联系
![](https://img-blog.csdn.net/20170724161431322?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHVja194aWFuZw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
View的绘制流程是从ViewRoot 的performTraversals开始的,流程图大概为:
![](https://img-blog.csdn.net/20170724155921564?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHVja194aWFuZw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
DecorView图
![](https://img-blog.csdn.net/20170724155938866?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHVja194aWFuZw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20170724164512345?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHVja194aWFuZw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
MeasureSpec的参数:
getMode获取Mode,具体有三个
UNSPECIFIED:要多大有多大,一般用于系统测量
EXACTLY:固定大小,及LayoutParams中的match_parent,或者固定大小,如100dp
AT_MOST:View的大小不能超过父容器大小,一般相当于LayoutParams的wrap_content
View的measure中执行了onMeasure,只需要看这个方法,这个
4000
方法是测量自己本身大小的方法;
ViewGroup的measure继承自view,根据不同ViewGroup重写onMeasure,在这个里面不仅要测量自己的大小,还要递归遍历其子View的大小
ViewGroup和View的layout用来确定自身的位置,
View的onLayout是一个空实现方法。
ViewGroup的onLayout会调用子view的layout来确放置子元素,所以onLayout是一个抽象方法,根据不同的ViewGroup放置view
View的draw方法是绘制自身的内容,
ViewGroup在有背景的时候才会调用draw方法,在dispatchDraw方法中会调用子view的draw方法,然后绘制子view
ActivityThread创建完Activity,将DecorView添加到Window中通过ViewRootImpl对象和DecorView建立联系
View的绘制流程是从ViewRoot 的performTraversals开始的,流程图大概为:
DecorView图
MeasureSpec的参数:
getMode获取Mode,具体有三个
UNSPECIFIED:要多大有多大,一般用于系统测量
EXACTLY:固定大小,及LayoutParams中的match_parent,或者固定大小,如100dp
AT_MOST:View的大小不能超过父容器大小,一般相当于LayoutParams的wrap_content
View的measure中执行了onMeasure,只需要看这个方法,这个
4000
方法是测量自己本身大小的方法;
ViewGroup的measure继承自view,根据不同ViewGroup重写onMeasure,在这个里面不仅要测量自己的大小,还要递归遍历其子View的大小
ViewGroup和View的layout用来确定自身的位置,
View的onLayout是一个空实现方法。
ViewGroup的onLayout会调用子view的layout来确放置子元素,所以onLayout是一个抽象方法,根据不同的ViewGroup放置view
View的draw方法是绘制自身的内容,
ViewGroup在有背景的时候才会调用draw方法,在dispatchDraw方法中会调用子view的draw方法,然后绘制子view
相关文章推荐
- 读书笔记-Android开发艺术探索-第4章-View的工作原理
- 【读书笔记】【Android 开发艺术探索】第4章 View 的工作原理
- 读书笔记:Android开发艺术探索之第3章 View的事件体系
- Android艺术开发探索第四章——View的工作原理(下)
- Android艺术开发探索第四章——View的工作原理(上)
- Android艺术开发探索第四章——View的工作原理(上)
- Android消息机制——消息队列工作原理(Android艺术开发探索读书笔记)
- Android艺术开发探索第四章——View的工作原理(下)
- 【读书笔记】【Android 开发艺术探索】第3章 View 的事件体系
- 读书笔记-Android开发艺术探索-第3章-View的事件体系
- Android 开发艺术探索笔记 第四章 View的工作原理
- Android view的工作原理(Android开发艺术探索随笔)
- Android开发艺术探索 读书笔记 第三章 View事件体系
- Android开发艺术探索——第四章View的工作原理
- ViewRoot,DecorView,MeasureSpec和View的工作原理——Android开发艺术探索笔记
- Android艺术开发探索第四章——View的工作原理(上)
- Android艺术开发探索第四章——View的工作原理(下)
- Android 开发艺术探索读书笔记 第三章 View的事件体系
- Android开发艺术探索——第三章View事件体系读书笔记
- 读书笔记-Android开发艺术探索-第8章-理解Window和WindowManager