android学习——MeasureSpec介绍及使用
2017-01-03 12:08
453 查看
一、MeasureSpc类说明 SDK的介绍:MeasureSpc类封装了父View传递给子View的布局(layout)要求。每个MeasureSpc实例代表宽度或者高度
它有三种模式:
①、UNSPECIFIED(未指定),父元素部队自元素施加任何束缚,子元素可以得到任意想要的大小;
②、EXACTLY(完全),父元素决定自元素的确切大小,子元素将被限定在给定的边界里而忽略它本身大小;
③、AT_MOST(至多),子元素至多达到指定大小的值。
常用的三个函数:
static int getMode(int measureSpec) : 根据提供的测量值(格式),提取模式(上述三个模式之一)
static int getSize(int measureSpec) : 根据提供的测量值(格式),提取大小值(这个大小也就是我们通常所说的大小)
static int makeMeasureSpec(int size,int mode) : 根据提供的大小值和模式,创建一个测量值(格式)
MeasureSpec类的处理思路是:
右移运算,使int 类型的高两位表示模式的实际值,其余30位表示其余30位代表长或宽的实际值----可以是WRAP_CONTENT、MATCH_PARENT或具体大小exactly size。 通过掩码MODE_MASK进行与运算 “&”,取得模式(mode)以及长或宽(value)的实际值。
MeasureSpec . makeMeasureSpec 方法,实际上这个方法很简单:
1 public static int makeMeasureSpec(int size, int mode) { 2 return size + mode; 3 }
二、measure过程详解
UI框架开始绘制时,皆是从ViewRoot.java类开始绘制的:
ViewRoot类简要说明: 任何显示在设备中的窗口,例如:Activity、Dialog等,都包含一个ViewRoot实例,该类主要用来与远端 WindowManagerService交互以及控制(开始/销毁)绘制。
1、开始UI绘制 , 具体绘制方法则是:
//开始View绘制流程 private void performTraversals(){ ... //这两个值我们在后面讨论时,在回过头来看看是怎么赋值的。现在只需要记住其值MeasureSpec.makeMeasureSpec()构建的。 int childWidthMeasureSpec; //其值由MeasureSpec类构建 , makeMeasureSpec int childHeightMeasureSpec;//其值由MeasureSpec类构建 , makeMeasureSpec // Ask host how big it wants to be host.measure(childWidthMeasureSpec, childHeightMeasureSpec); ... } ... View Code
2、调用measure()方法去做一些前期准备 measure()方法原型定义在View.java类中,final修饰符修饰,其不能被重载:
相关文章推荐
- android学习——MeasureSpec介绍及使用
- android学习——MeasureSpec介绍及使用
- android学习——MeasureSpec介绍及使用
- android学习——MeasureSpec介绍及使用
- android学习——MeasureSpec介绍及使用
- Android中自定义View的MeasureSpec介绍及使用详解
- Android学习之 Scroller的介绍与使用
- Android MeasureSpec介绍及使用说明
- Android的学习之路(二)项目中原生文件的使用场景和文件介绍
- Android MeasureSpec介绍及使用
- Android中MeasureSpec介绍及使用详解
- Android学习之 Scroller的介绍与使用
- Android MeasureSpec介绍及使用详解
- Android MeasureSpec介绍及使用
- Android中measure过程、view绘制原理和MeasureSpec介绍及使用详解
- OrmLite For Android 学习笔记 之一 Ormlite 介绍及使用
- Android学习之介绍Binder的简单使用
- 微软企业库5.0 学习之路——第五步、介绍EntLib.Validation模块信息、验证器的实现层级及内置的各种验证器的使用方法——中篇
- Android(OPhone) 学习笔记2 - Home API 的使用
- Android Resource介绍和使用[转]