关于自定义控件的onMeasure()其中的MeasureSpec
来源:互联网 发布:js match对象 编辑:程序博客网 时间:2024/06/05 03:17
我在看一个项目的时候,发现项目用到了自定义控件,其中一个控件是继承了GridView,并且重写了onMeasure()方法,按照一般的理解,onMeasure()是用来计算view大小的,它传进来两个参数onMeasure(int widthMeasureSpec, int heightMeasureSpec),这个MeasureSpec是一个32位的int,是用来规定view的绘制大小的,其中的最高2位用来表示绘制模式,查阅源码可以知道一共有三种模式。
1、UNSPECIFIED(未定义模式, 00),意味着parent View不会限制child View的大小
2、EXACTLY(精确模式,01),即当前View的大小是固定的
3、AT_MOST(最大模式,10),即当前View的大小允许在0-parent_View.size范围内
MeasureSpec的剩下30位表示View的size,根据源码显示,其范围是0 ~ 2^30-1,即剩下的30位所能表示的最大int数
*我在看了一些onMeasure介绍的文章发现他们在演示示例的时候,其MeasureSpec一般为
int heightMeasureSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST)
这个mode就不说了,根据具体需要而改变,但是这个size我是抱有疑问的,因为源码里给的size范围是 2^30-1,但是Integer.MAX_VALUE = 2^31-1,那么右移2位之后应该就是 2^29-1了,这里不是就缩小的范围了吗,但奇怪的是不光别人演示代码是这样的,就连我那个别人写的项目也是这样写的,所以我比较疑惑,我认为这里右移1位才是合适的。
不过由于这个size是最大尺寸,所以也很难测试,这里就记录一下吧......
- 关于自定义控件的onMeasure()其中的MeasureSpec
- 自定义控件(12)---View的onMeasure默认、自定义情况(MeasureSpec)
- Android中自定义View的onMeasure以及MeasureSpec使用
- Android 自定义View 测量控件大小onMeasure中MeasureSpec作用
- Android自定义控件的onMeasure和onLayout
- 自定义控件的onMeasure方法详解
- 关于MeasureSpec的介绍
- 关于获取自定义控件(加减控件)及获取其中的子控件
- Android的onMeasure和onLayout And MeasureSpec揭秘
- Android的onMeasure和onLayout And MeasureSpec揭秘
- Android的onMeasure和onLayout And MeasureSpec揭秘
- Android的onMeasure和onLayout And MeasureSpec揭秘
- Android的onMeasure和onLayout及MeasureSpec解析
- Android的onMeasure和onLayout And MeasureSpec揭秘
- 快速理解android View的测量onMeasure()与MeasureSpec
- Android的onMeasure和onLayout And MeasureSpec揭秘
- 自定义View的onMeasure()
- 自定义的onMeasure()方法
- css复习——表格与表单
- Linux有问必答:如何检查Linux的内存使用状况
- 目录处理命令rm
- 配置Jstl的Maven依赖
- linux下利用gcc编译C和C++
- 关于自定义控件的onMeasure()其中的MeasureSpec
- 第四周项目一
- Oracle中CHAR类型不足位数时,用空格自动补足位数
- 项目中okhttp网络框架的封装使用
- DFS/BFS 关于迷宫问题
- bzoj2086[Poi2010]Blocks 单调栈好题
- 浅谈MVC、MVP、MVVM架构模式的区别和联系
- EJB的优势和使用场景
- 【转】数据库基本知识:(一)导论