View的Draw方法流程

最近学习了View的Draw方法,这里做个总结。Draw方法分6步完成View的绘制。

1、绘制背景background

2、如果有颜色变淡,那么锁定原来的画布canvas,canvas.save

3、绘制View自身的内容

4、绘制子View

5、如果2步有颜色变淡操作,恢复原来锁定的画布canvas,canvas.restore

6、绘制滚动条等装饰


View的绘制流程:onMeasure,onLayout,onDraw。

onMeasure:测量视图大小。从顶层父View到子View递归调用measure,measure中调用onMeasure

onLayout:确定View位置。也是递归

onDraw:绘制视图,1、绘制背景,2、保存画布,3、绘制内容,4、绘制子View,5、恢复画布,6、绘制滚动条


onMeasure中返回的值通过MeasureSpec.makeMeasureSpec对mode和size进行组合。

mode有三种EXACTLY可指定大小也可实际大小,AT_MOST最大的空间,UNSPECIFIED设置任意大小,没有限制。


具体应用是1、GridView和ListView外面嵌套ScrollView的时候,滑动冲突;2、设置为wrap_content的时候高度问题被截断



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值