Android绘制

Android的绘制包含三个部分  测量 布局 和 绘制

 

1.测量的目的是让父布局清楚子view的大小 然后方便根据父布局的布局规则进行布局

关于测量:view的测量方法是onMeasure 在里面 view需要实现对自己的测量 ,然后通过setMeasureDimension来确定自己测量后的大小以提供给父布局作参考。

其中view的onMeasure方法提供了两个参数 也就是widthSpec和heightSpec,这两个spec是由父布局提供的,用于子view测量自己作参考。

而viewGroup的测量 一部分需要确认子view的布局方式,并根据子view测量后的大小决定自己的大小,另一部分一些装饰性的布局也会影响自己的最终大小。

2.布局的目的是让父布局确认子view的 左上 右下 也就是在父布局中的位置 

布局的直接效果是child的left top right bottom都有了具体的值

布局也是为了让父布局能统一的确定所有子view的位置,这样后面如果位置不发生改变,那后续就没有必要做测量,布局了。

3.绘制

绘制是一个view画出自身的过程,本身view是有好几层的,背景,内容,前景

而绘制是包括硬件绘制和软件绘制:

硬件绘制走的是ViewRootImpl的mAttachInfo.mThreadedRenderer.draw(mView, mAttachInfo, this)

软件绘制走的是ViewRootImpl的drawsoftware(里面走的是mView.draw)
你无须担心你自定义的view的ondraw得不到调用,因为在硬件绘制上的
updateViewTreeDisplayList操作会进行执行。

 

通过测量,布局,绘制 图像便显示出来 然后等待下一个Vsync信号到来,如果一切都没有改变,后续不会再绘制而是直接使用旧的,如果出现了动画,那么每次都可能会执行者三个动作。

 

转载于:https://www.cnblogs.com/vete-l/p/8508457.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值