博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
view 树的渲染过程
阅读量:4222 次
发布时间:2019-05-26

本文共 1875 字,大约阅读时间需要 6 分钟。

1,创建MeasureSpec

为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.onMeasurePhoneWindow$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

你可能感兴趣的文章
自动驾驶汽车CAN总线数字孪生建模(二)
查看>>
自动驾驶汽车GPS系统数字孪生建模(一)
查看>>
自动驾驶汽车GPS系统数字孪生建模(二)
查看>>
上海控安入选首批工控安全防护能力贯标咨询机构名单
查看>>
自动驾驶汽车传感器数字孪生建模(一)
查看>>
CUDA 学习(四)、线程
查看>>
CUDA 学习(五)、线程块
查看>>
CUDA 学习(八)、线程块调度
查看>>
CUDA 学习(九)、CUDA 内存
查看>>
CUDA 学习(十一)、共享内存
查看>>
游戏感:虚拟感觉的游戏设计师指南——第十四章 生化尖兵
查看>>
游戏感:虚拟感觉的游戏设计师指南——第十五章 超级马里奥64
查看>>
游戏感:虚拟感觉的游戏设计师指南——第十七章 游戏感的原理
查看>>
游戏感:虚拟感觉的游戏设计师指南——第十八章 我想做的游戏
查看>>
游戏设计的艺术:一本透镜的书——第十章 某些元素是游戏机制
查看>>
游戏设计的艺术:一本透镜的书——第十一章 游戏机制必须平衡
查看>>
游戏设计的艺术:一本透镜的书——第十二章 游戏机制支撑谜题
查看>>
游戏设计的艺术:一本透镜的书——第十三章 玩家通过界面玩游戏
查看>>
编写苹果游戏中心应用程序(翻译 1.3 为iOS应用程序设置游戏中心)
查看>>
编写苹果游戏中心应用程序(翻译 1.4 添加游戏工具包框架)
查看>>