(五)View的测量 MeasureSpec类
来源:互联网 发布:ubuntu 16.04改中文 编辑:程序博客网 时间:2024/05/17 23:00
MeasureSpec类
MeasureSpec是一个32位的int值,高两位为SpecMode(测量模式),低30位为SpecSize(测量大小)。
SpecMode(测量模式)分类:
EXACTLY模式:父容器已经测出了View所需要的精确大小,此时View的最终大小就是SpecSize所指定的值。对应math_parent和具体数值两种模式。
AT_MOST模式: 父容器指定一个可用大小即SpecSize,View的大小不能超出此值,具体根据不同View的具体实现不同。一般对应wrap_content.
UNSPECTFIED模式:父容器不对View进行限制,一般用于系统内部。
系统内部通过MeasureSpec来进行View测量的,正常情况下使用View指定MeasureSpec,尽管如此,我们可以给View设置LayoutParams。在测量时,系统将LayoutParams在父容器的约束下转化成对应MeasureSpec,然后根据MeasureSpec确定高和宽。注:LayoutParams和父容器一起才能决定View的MeasureSpec。
顶级View(DecorView)的MeasureSpec由窗口尺寸和其自身的LayoutParams来共同决定。它的创建过程在源码中表现为:在ViewRootImpl的measureHierarchy方法中调用了getRootMeasureSpec(int 屏幕尺寸,int LayoutParams),该方法返回具体的measurespec,传入math_parent和具体数值,返回EXACTLY,传入wrap_content返回AT_MOST。之后将返回的值传入performMeasure(int,int)方法。
对于普通View来说,其MeasureSpec由父容器的MeasureSpec和自身的LayoutParams共同决定,View的measure的过程由ViewGroup传递过来,在ViewGroup的measureChildWithMargins方法中调用getChildMeasureSpec方法返回Child高和宽的MeasureSpec,之后调用child.measure方法。getChildMeasureSpec方法的具体实现逻辑如
下图:
阅读全文
0 0
- (五)View的测量 MeasureSpec类
- View的工作原理之MeasureSpec测量规格
- 快速理解android View的测量onMeasure()与MeasureSpec
- Android 测量类MeasureSpec
- Android中view的测量过程中,很重要的也很难理解的一个东西MeasureSpec
- View的MeasureSpec使用
- android测量模式MeasureSpec的理解
- Android 自定义View 测量控件大小onMeasure中MeasureSpec作用
- View中MeasureSpec的作用
- MeasureSpec类的分析以及View的工作流程
- 【Android】【测量】MeasureSpec
- View.MeasureSpec
- view的流程(测量,布局,绘制)
- Android View的测量
- View的测量
- view的测量
- Android View的测量
- View的测量
- 个人信息
- React-Native优化之PureComponent
- JSP其他主题
- WKWebView禁止捏合的方法
- POJ 2502 Subway(将各种数据转化成图+最短路+迪杰斯特拉算法)
- (五)View的测量 MeasureSpec类
- git版本控制
- hdu 6053 TrickGCD [莫比乌斯函数]
- Centos7 udev
- 模拟购物车的实现过程(详细讲解)
- Java_Day13
- 使用Generic Webhook Trigger插件实现Jenkins+WebHooks(码云)持续集成--指定具体分支集成
- Java的流程控制
- ZOJ 3699 (贪心模拟)【加油站类模板】