当一个activity取得焦点时,它将被要求去画出它的布局(layout),android将获得画这个视图的进程,但这个activity必须

要提供它的布局结构的根节点。

画布局开始于这个布局的根节点。他必须检测和画出这个布局结构(layout tree)。沿着这个布局结构画出布局

每个视图组(view group)负责画出它的每个子视图(用draw()),并且视图(view)负责画出他自己。

因为布局树是倒过来的,所以父节点比他的子节点先画,兄弟节点按他的先后顺序被画出。

画一个视图要经过两个处理:一个检测处理和一个布局处理。检测处理由measure(int, int)实现从头到尾的检测视图树

通过递归遍历这个视图树。在检测处理的最后每个视图将会储存它的检测结果。第二个的布局处理发生在layout(int, int, int, int)

他也是从头到尾的,在这个过程中,每个父节点将会通过上一个检测处理得到的元素尺寸定位它的子节点的位置。

当一个视图的measure()返回时,它的getMeasuredWidth()getMeasuredHeight()的值必须被设定,用于它的所有子节点使用。

这个检测处理过程用两个类去交流数据:这个View.MeasureSpec类用于告诉他们的父节点他们想要怎样的尺寸和位置。然后基本LayoutParams类将

用于描述视图想要多大的长和宽。每个元素的尺寸必须指定以下三个之一:

1.精确的值

2.LL_PARENT。这意味着View想设定为同它的父结点一样大

3.WRAP_CONTENT 只需要能达到它的内容显示

每一个ViewGroup类有相应的LayoutParams子类,用来描述它的尺寸和定位信息

MeasureSpec被用来自顶向下(通过View tree)传递各种尺寸和定位需求。

每一个MeasureSpec能够是下列3种模型中的一个:

1.UPSPECIFIED。

2.EXACTLY。

3.AT_MOST


更多相关文章

  1. android中,实现水平方向上三个按钮左对齐、居中对齐、右对齐效果
  2. android之自定义渐变颜色(一)
  3. ListView拖动时背景黑色的问题
  4. Android用户界面设计:线性布局
  5. Android(安卓)辅助功能服务AccessibilityService
  6. android 上下文菜单Context Menu
  7. 自己实现的android树控件,android TreeView
  8. Android(安卓)自定义底部上拉控件的实现
  9. Android(安卓)UI - 右侧滑动实现A-Z的快速定位

随机推荐

  1. mysql 8.0.15 下载安装详细教程 新手必备
  2. Centos7下mysql 8.0.15 安装配置图文教程
  3. Linux下mysql 8.0.15 安装配置图文教程以
  4. sql与各个nosql数据库使用场景的讲解
  5. MySQL group by对单字分组序和多字段分组
  6. MySQL开发规范与使用技巧总结
  7. pycharm2017实现python3.6与mysql的连接
  8. MySQL执行状态的查看与分析
  9. Mysql覆盖索引详解
  10. MySQL主从同步延迟的原因及解决办法