自定义View绘制流程(面试专用)

本文详细探讨了Android自定义View的目的,分为自定义控件和自定义容器两大类。介绍了必须重写的构造方法及其作用,以及ViewGroup的绘制流程,包括onMeasure计算大小,onLayout确定位置,onDraw进行绘制。同时解析了onMeasure中的MeasureSpec模式,并强调onDraw中Canvas和Paint的重要性。
摘要由CSDN通过智能技术生成

(自己整理的比较乱,但这么说没问题的!)
自定义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的模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值