自定义View的绘制流程(让你深入理解自定义View)

自定义view是干嘛的呢?

当我们不满足于Android提供的原生控件和布局时,就应该考虑到自定义view。

自定义View分为两大块: 自定义控件 和 自定义容器

自定义View必须重写两个构造方法

第一个是一个参数的上下文,用于在java代码中new对象使用

第二个是两个参数的一个上下文,一个AttributSet。 主要用于在xml中定义使用。

OnMesure 计算出控件的大小。

onLayout 计算出控件的位置。

onDraw 画出样式

ViewGroup\View的绘制流程:

第一步:调用ViewGroup中的onMeasure方法。

在方法中调用了measureChild方法,执行了所有子控件的onMesure方法测绘出所有的子控件的大小。

调用setMeasureDimension方法 设置测绘后的大小。

第二步:调用ViewGroup中的onLayout方法。

在方法调用getChildCount方法 获取到子条目数量。

用for循环遍历出每一个子条目的对象。 通过对象.layout方法 给子控件设置摆放位置。

第三步:首先调用ViewGroup的disPatchDraw方法绘制ViewGroup。然后调用View中的onDraw方 进行绘制。

方法详解:

onMeasure:用于设置自定义view的大小

setMeasuredDimension();

方法内部需要调用MeasureSpec类 可以获取到view的模式 和 大小;

MeasureSpec.getMode()获取模式

MeasureSpec.getSize()获取大小​

模式:

MeasureSpec.EXACTLY 精确值模式: match_parent 或者 固定一个值(。。dp)时使用。

MeasureSpec.AT_MOST 最大值模式: warp_content 当不确定大小时使用。但是不超过父控件

MeasureSpec.UNSPECIFIED 不用 就不总结了。

onDraw方法:

用于绘制自定义View。

主要使用到了Canvas 画布对象。 和Paint 画笔对象 进行的绘制。

onLayout方法:

具体实现步骤下步加上.............

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值