Android view的绘制过程

原创 2016年08月30日 10:57:50

恩!我要写博客加深记忆,学到的东西就要记录下来!坚持吧~
一.测量
1.由一个父view调用子view的measure(int widthMeasureSpac,int heightMeasureSpac)方法
此方法会得到由父View提供给子view推荐的长和宽(这两个值并不是最后子view的最终大小,而是父view
提供给子view用来计算大小的)。
2.widthMeasureSpac和heightMeasureSpac是两个32位的int值,高两位代表测量模式,后三十位代表
尺寸值。
3.测量模式分为三种,AT_MOST代表一个最大值模式,一般子View设置wrap_content时因为不能确定子view
的大小所以会使用这种测量模式,EXACTLY代表精准模式,一般来说当view设置固定的尺寸值以及view使用
match_parent时view可以获得到精确的值(直接是父view的大小),UNSPECIFIED这种模式是不确定的,view
想要多大就给多大,一般这种模式不常用(ListView的item的高度就是想要多高就有多高)。
4.子view在measure方法里面会计算出自己的高度,然后调用自己onMeasure(int widthMeasureSpac,int heightMeasureSpac)在此方法里面会调用setMeasuredDimensions(int widthMeasureSpac,int
heightMeasureSpac)方法最终确定自己大小。
5.一般我们覆盖子view的onMeasure方法自定义view的测量(比如当前view的宽超过父view时进行换行)。
6.几个重要的小知识点,可以通过getMeasuredWidth和getMeasureHeight拿到子view的宽度和高度(但必须在测量过程完成之后)
二.布局
1.父viewGroup会调用子view的onLayout(int l,int t,int r,int b)方法,这个方法传给子view左上
和右下四个坐标点。
2.子view拿到这四个坐标点会通过LayoutParams计算margin等然后调用自己的Layout方法最终确定自己的
位置。
3.view的layout方法是final的,是不能被覆盖的,而viewGroup里的onLayout方法是一个抽象方法,我们
一般会重写这个方法来定义viewGroup。
三.绘制
1.大小和位置确定下来之后就只剩下绘制了。
2.首先由父view的DispatchDraw方法分发绘制,遍历调用子view的draw方法,而draw会调用onDraw方法完成
最终的绘制。
3.几个重要的小知识点,invalidate重绘方法和computerScroll方法(写Scroller时候会重点写这个方法的作用)

相关文章推荐

曾经进公司面试的C语言有关指针和数组的笔试题

原题如下: #include int main(void) { int i , j ; unsigned int Array_A[32]; unsigned int *pPointer; ...

C语言中 sizeof 运算的值是在编译时还是运行时确定的?

在经典的《C语言程序设计》书中说到: C语言提供了一个编译时(compile-time) 一元运算符 sizeof,它可以用来计算任一对象的长度。 表达式 sizeof 对象 以及 siz...

Android View绘制过程

Android的View绘制是从根节点(Activity是DecorView)开始,他是一个自上而下的过程。View的绘制经历三个过程:Measure、Layout、Draw...
  • xyz_lmn
  • xyz_lmn
  • 2014年03月19日 20:57
  • 40337

Android View的绘制过程

简而言之,Android view的绘制过程包含三个过程: OnMeasure( )OnLayout( )OnDraw( )其中,OnMeasure( )负责确定view本身所占的空间和大小(这里的...

android之View绘制到窗口上的过程

以前在研究自定义空间的时候,查看过View和ViewGroup绘制的流程的。只是定性的知道会经过onMeasure—onLayout—onDraw这些流程。上一篇Android视图加载到窗口的过程分析...

【Android】View绘制过程分析之measure

读源码,分析View的绘制过程,对自定义View的开发与理解有莫大的帮助。这是写本组文章的目的所在! 绘制View的过程分为3个阶段: 第1阶段,measure() 计算View应占空间大小第2阶...
  • rongxh7
  • rongxh7
  • 2014年02月22日 00:17
  • 1535

Android中View的绘制过程

View可以看成一个树形结构,父控件是父节点,子控件是子节点。View的绘制过程就是遍历这棵树。 View的绘制有三步: measure:测量View的Width和Height,layou...

Android View绘制过程

Android的View绘制是从根节点(Activity是DecorView)开始,他是一个自上而下的过程。View的绘制经历三个过程:Measure、Layout、Draw。基本流程如下图: ...

Android View的绘制过程

首先是view的绘制过程~最主要的分三部分 measure layout draw 看字面意思,计算,布局,画~ android中控件相当于是画在一个无限大的画布上的,那就产生了几个问题 画布...

Bimmer7 Android教程 进阶系列之:深入了解View的绘制过程

TBC
  • Bimmer7
  • Bimmer7
  • 2014年10月23日 12:23
  • 470
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android view的绘制过程
举报原因:
原因补充:

(最多只允许输入30个字)