关于View的onMeasure
来源:互联网 发布:弱视训练软件下载 编辑:程序博客网 时间:2024/05/06 18:39
因为一直都记不住onMeasure的过程,不知道自定义view的时候该怎么复写onMeasure。所以就试着写一次下来,增强一下记忆力。
View中的onMeasure:
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { setMeasuredDimension(getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec), getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec));}这是View中的onMeasure,我们可以看到只有一个方法setMeasuredDimension()。所以这个方法就是直接设置View的大小的。
setMeasuredDimension:
最后会调用setMeasuredDimensionRaw设置大小
protected final void setMeasuredDimension(int measuredWidth, int measuredHeight) { boolean optical = isLayoutModeOptical(this); if (optical != isLayoutModeOptical(mParent)) { Insets insets = getOpticalInsets(); int opticalWidth = insets.left + insets.right; int opticalHeight = insets.top + insets.bottom; measuredWidth += optical ? opticalWidth : -opticalWidth; measuredHeight += optical ? opticalHeight : -opticalHeight; } setMeasuredDimensionRaw(measuredWidth, measuredHeight);}
getDefaultSize:
从源码中我们可以知道,当测量模式是Unspecified的时候,返回的是接收的第一个参数size,当测量模式是At_MOST或者是EXACTLY的时候,返回的值是系统测量得到的值。
public static int getDefaultSize(int size, int measureSpec) { int result = size; int specMode = MeasureSpec.getMode(measureSpec); int specSize = MeasureSpec.getSize(measureSpec); switch (specMode) { case MeasureSpec.UNSPECIFIED: result = size; break; case MeasureSpec.AT_MOST: case MeasureSpec.EXACTLY: result = specSize; break; } return result;}所以我们知道了,要复写onMeasure的时候我们最后要把大小传给setMeasuredDimesion;
0 0
- 关于View的onMeasure
- View的onMeasure方法
- View 的onMeasure方法
- 自定义View的onMeasure()
- View的onMeasure方法
- 关于View的onMeasure()、onSizeChanged()、onLayout()、onDraw()调用顺序
- 关于View的onMeasure()、onSizeChanged()、onLayout()、onDraw()调用顺序
- 关于安卓View中onMeasure的详细分析
- 自定义View,关于onMeasure方法的两个参数widthMeasureSpec,heightMeasureSpec
- View.onMeasure方法的理解
- 自定义View的OnMeasure理解
- View的onMeasure参数理解
- 自定义View的onMeasure过程
- 自定义View的onMeasure、onLayout
- View的onMeasure()方法解读
- 自定义View---------->onMeasure()的理解
- view的onlayout,onmeasure,ondraw
- 自定义view绕不开的OnMeasure
- c#关于微信网页授权,获取关注等接口调用
- 数字转换成中文汉字
- C#代码重构技巧总结
- 驰骋工作流程引擎 java .net 开发人员- 英才招聘
- Android Application的作用
- 关于View的onMeasure
- js定义函数的几种方法
- 类扩展:Extension
- File2Base64 Base64ToFile
- CMM ----软件能力成熟度模型
- Windows下F&F&m&peg&快&速&入&门
- 线程和进程的区别
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- eclipse中使用java程序调用webservice的总结