View的Draw方法流程

    xiaoxiao2021-04-01  37

    最近学习了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的时候高度问题被截断

    转载请注明原文地址: https://ju.6miu.com/read-665566.html

    最新回复(0)