Android API之android.view.View.MeasureSpec
来源:互联网 发布:麦当劳改名知乎 编辑:程序博客网 时间:2024/05/21 17:47
[转载自]http://www.cnblogs.com/fengzhblog/p/3175948.html
android.view.View.MeasureSpec
MeasureSpec是View的内部类
public static class MeasureSpec
MeasureSpec封装从parent传递给child的layout要求。每个MeasureSpec表示对width/height的要求。MeasureSpec由size和mode组成。可用的mode有3种:
1. UNSPECIFIED表示parent没有强加给child任何constraint。
2. EXACTLY表示parent已经确定child的精确size。
3. AT_MOST表示child可以设定为specified size之内的任何值。
MeasureSpec实现为int类型,相比object类型,降低了allocation。可以将<size, mode>元组pack和unpack为int类型。
MeasureSpec定义的常量有:
private static final int MODE_SHIFT = 30;
private static final int MODE_MASK = 0x3 << MODE_SHIFT;
public static final int UNSPECIFIED = 0 << MODE_SHIFT;
public static final int EXACTLY = 1 << MODE_SHIFT;
public static final int AT_MOST = 2 << MODE_SHIFT;
MeasureSpec定义的方法有:
public static String toString(int measureSpec) { int mode = getMode(measureSpec); int size = getSize(measureSpec); StringBuilder sb = new StringBuilder("MeasureSpec: "); if (mode == UNSPECIFIED) sb.append("UNSPECIFIED "); else if (mode == EXACTLY) sb.append("EXACTLY "); else if (mode == AT_MOST) sb.append("AT_MOST "); else sb.append(mode).append(" "); sb.append(size); return sb.toString();}public static int getSize(int measureSpec) { return (measureSpec & ~MODE_MASK);}public static int getMode(int measureSpec) { return (measureSpec & MODE_MASK);}public static int makeMeasureSpec(int size, int mode) { return size + mode;}
- Android API之android.view.View.MeasureSpec
- 【Android源码剖析】(API 19)[View----->MeasureSpec]
- 【Android基础】-View.MeasureSpec
- Android View MeasureSpec详解
- Android源码分析之---View.MeasureSpec 解析
- Android自定义View基础之MeasureSpec详解
- Android View(三)-MeasureSpec详解
- Android中自定义View的MeasureSpec使用
- Android中自定义View的MeasureSpec使用
- Android中自定义View的MeasureSpec使用
- Android中自定义View的MeasureSpec使用
- Android中自定义View的MeasureSpec使用
- Android中自定义View的MeasureSpec使用
- Android中自定义View的MeasureSpec使用
- Android中自定义View的MeasureSpec使用
- Android中自定义View的MeasureSpec使用
- Android中自定义View的MeasureSpec使用
- Android中自定义View的MeasureSpec使用
- 阿里与腾讯之争
- codeforces 226 div2
- Java观察者模式
- 《C++ Primer第五版》读书笔记(1)--redhat linux下安装gcc 4.8.2
- Android点亮屏幕和解锁完整示例
- Android API之android.view.View.MeasureSpec
- 在myEclipse中进行Debug调试
- python之三-statements and functions
- jQuery中Ajax-ajax方法
- c++中的floor,ceil,round
- XCode Debugger中的Icon符号的意义
- 集合使用NSArray、NSSet、NSDictionary的使用
- Mybatis 之 resultMap简介
- 编码规范