当前位置:首页 > 未命名 > 正文内容

View工作原理之Layout过程和Draw过程

u3blog8年前 (2016-02-16)未命名236

Layout过程

Layout过程正如其名,是负责确定View的位置的过程,在这个过程中,会确定View以及子View的位置。

源码流程

在layout函数中,首先调用了setFrame函数来确定自己的位置,然后依次调用子View的onLayout函数来确定其位置。 流程图如下: 1 具体的onLayout方法依照View的类型不同也会有所不同,因为子元素在内部的排列方式会有所不同,例如我们常见的LinearLayout就有横向和纵向两种排列方式。

Draw过程

Draw过程正如其名字,绘制,将View绘制到屏幕上

绘制的步骤

1.绘制背景  bacground.draw(canvas) 2.绘制自身 onDraw 3.绘制children dispatchDraw 4.绘制装饰   onDrawScrollBars 这几个流程基本是按照顺序来执行的,中间还有一些条件的判断,属于具体细节,可以参看源码。

setWillNotDraw函数

顾名思义,传入true参数之后,系统不会对其进行绘制流程,一般这个参数是被关闭的,当我们自定义的ViewGroup不需要绘制的时候可以启动,可以让系统对其进行一定程度的优化。

结语

至此,View的三个最主要的工作流程已经全部讲述完毕,作者以源码结合实例的方式进行了讲解。 弄清view的工作流程对之后自定义控件的学习和使用是十分有好处的,所以这一节的内容显得格外重要,所以特此作两篇读书笔记,以加深印象。

扫描二维码推送至手机访问。

版权声明:本文由u3blog发布,如需转载请注明出处。

本文链接:https://u3blog.xyz/?id=198

分享给朋友:

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。