view 树的渲染过程
2014-03-26 21:01
162 查看
1,创建MeasureSpec
为32位的int数值,其中前面2位为mode,后面30位为size;
mode包含有exactly, at_most, unspecified;
2, 初始化view root的spec
3, viewRoot
performTranversals -> measure layout draw
4, DecorView 树
RelativeLayout后面的为setcontentView之后的view树;
没有title的情况下:
5,DecroView Measure堆栈
为32位的int数值,其中前面2位为mode,后面30位为size;
mode包含有exactly, at_most, unspecified;
public static int makeMeasureSpec(int size, int mode) { if (sUseBrokenMakeMeasureSpec) { return size + mode; } else { return (size & ~MODE_MASK) | (mode & MODE_MASK); }
2, 初始化view root的spec
rootDimension根据创建window指定的attrs?viewRoot
private static int getRootMeasureSpec(int windowSize, int rootDimension) { int measureSpec; switch (rootDimension) { case ViewGroup.LayoutParams.MATCH_PARENT: // Window can't resize. Force root view to be windowSize. measureSpec = MeasureSpec.makeMeasureSpec(windowSize, MeasureSpec.EXACTLY); break; case ViewGroup.LayoutParams.WRAP_CONTENT: // Window can resize. Set max size for root view. measureSpec = MeasureSpec.makeMeasureSpec(windowSize, MeasureSpec.AT_MOST); break; default: // Window wants to be an exact size. Force root view to be that size. measureSpec = MeasureSpec.makeMeasureSpec(rootDimension, MeasureSpec.EXACTLY); break; } return measureSpec; }
3, viewRoot
performTranversals -> measure layout draw
4, DecorView 树
RelativeLayout后面的为setcontentView之后的view树;
没有title的情况下:
5,DecroView Measure堆栈
LinearLayout(View).measure(int, int) line: 16471 PhoneWindow$DecorView(ViewGroup).measureChildWithMargins(View, int, int, int, int) line: 5125 PhoneWindow$DecorView(FrameLayout).onMeasure(int, int) line: 310 PhoneWindow$DecorView.onMeasure(int, int) line: 2291 : super.onMeasure PhoneWindow$DecorView(View).measure(int, int) line: 16497 ViewRootImpl.performMeasure(int, int) line: 1916 ViewRootImpl.measureHierarchy(View, WindowManager$LayoutParams, Resources, int, int) line: 1113 ViewRootImpl.performTraversals() line: 1295
相关文章推荐
- GLSurfaceView渲染过程详解
- Yii2.0源码阅读-视图(View)渲染过程
- Android WebView硬件加速渲染网页UI的过程分析
- Android WebView启动Chromium渲染引擎的过程分析
- GLSurfaceView渲染过程详解
- GLSurfaceView渲染过程详解
- Android WebView硬件加速渲染网页UI的过程分析
- viewgroup 渲染过程
- 解决在onCreate()过程中获取View的width和Height为0的4种方法
- 理解WebKit和Chromium: Chromium WebView和Chrome浏览器渲染机制
- TouchEvent分发过程一:TouchEvent在ViewGroup中的分发过程
- 详解Vue改变数组中对象的属性不重新渲染View的解决方案
- Android应用程序请求SurfaceFlinger服务渲染Surface的过程分析
- ViewPager的使用方法和实现过程
- iOS开发日记35-事件处理机制与图像渲染过程
- Android中View的绘制过程 onMeasure方法简述 附有自定义View例子
- Android中将布局文件/View添加至窗口过程分析 ---- 从setContentView()谈起
- Jetspeed渲染过程
- 理解WebKit和Chromium: Chromium WebView和Chrome浏览器渲染机制
- Android中将布局文件/View添加至窗口过程分析 ---- 从setContentView()谈起