* onMeasure * onDraw * dispatchDraw * onLayout * ......
Activity
gabyallen commentedon Nov 19, 2019
onMeasure
onDraw
dispatchDraw
onLayout
onKeyDown()
[-]2019-11-19:谈一谈自定义View和自定义ViewGroup?[/-][+]2019-11-19:谈一谈自定义View和自定义ViewGroup?[/+]Squirtle12 commentedon Nov 20, 2019
为什么现在问题都莫得解答了?
DQSecret commentedon Nov 20, 2019
@Squirtle12
可能是因为回答的质量层次不齐,有的是直接从网上复制过来的,
阅读者无从分辨哪一个是相对正确的,or 讲的通俗易懂,
因此,也就无法给回答者以反馈,例如我给你的 +1,
也正因为这样,回答者没有反馈,时间久了,也就不贡献回答了。
weikano commentedon Nov 20, 2019
这种问题就不好回答……
都知道要onMeasure测量尺寸、onLayout中layout到对应的位置,onDraw里面要注意减少对象创建……
但面试的时候这么答,屁用没有
Squirtle12 commentedon Nov 20, 2019
说的很对,之前题目贡献者还会给出一个标准答案,现在也没有了。
MoJieBlog commentedon Dec 5, 2019
em...回答这些现在确实比较难合格。而且我这里问的是自定义View和ViewGroup。更偏向于说他俩不同的地方,比如事件分发,比如onMeasure,onLayout,onDraw分别是如何处理的。比如那些方法是自定义ViewGroup有的,自定义View没有的。
zhaoxiuyu commentedon Jan 16, 2020
自定义 View
1.onMeasure()方法用于测量自己宽高,前提是继承View。如果继承系统已经有的控件比如TextView,Button等等 则不需要重写,因为系统已经给你计算好了。
2.onDraw()方法用于绘制自己想实现的样式。
3.onTouch()用于用户和控件的交互处理。
自定义 ViewGroup
1.onMeasure方法,for循环获取所有子view,然后根据子view的宽高来计算自己的宽高。
2.onDraw() 一般不需要,默认是不会调用的。如果需要绘制就要实现dispatchDraw()来进行绘制。
3.onLayout()用来摆放子view,前提view是可见
4.很多情况下不是不会继承ViewGroup的,一般都是继承系统控件。