Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2019-11-19:谈一谈自定义View和自定义ViewGroup? #191

Open
MoJieBlog opened this issue Nov 19, 2019 · 7 comments
Open

2019-11-19:谈一谈自定义View和自定义ViewGroup? #191

MoJieBlog opened this issue Nov 19, 2019 · 7 comments

Comments

@MoJieBlog
Copy link
Collaborator

  • onMeasure
  • onDraw
  • dispatchDraw
  • onLayout
  • ......
@gabyallen
Copy link

onMeasure
onDraw
dispatchDraw
onLayout
onKeyDown()

@Moosphan Moosphan changed the title 2019-11-19:谈一谈自定义View和自定义ViewGroup? 2019-11-19:谈一谈自定义View和自定义ViewGroup? Nov 20, 2019
@Squirtle12
Copy link

为什么现在问题都莫得解答了?

@DQSecret
Copy link

为什么现在问题都莫得解答了?

@Squirtle12
可能是因为回答的质量层次不齐,有的是直接从网上复制过来的,
阅读者无从分辨哪一个是相对正确的,or 讲的通俗易懂,
因此,也就无法给回答者以反馈,例如我给你的 +1,
也正因为这样,回答者没有反馈,时间久了,也就不贡献回答了。

@weikano
Copy link

weikano commented Nov 20, 2019

这种问题就不好回答……
都知道要onMeasure测量尺寸、onLayout中layout到对应的位置,onDraw里面要注意减少对象创建……
但面试的时候这么答,屁用没有

@Squirtle12
Copy link

为什么现在问题都莫得解答了?

@Squirtle12
可能是因为回答的质量层次不齐,有的是直接从网上复制过来的,
阅读者无从分辨哪一个是相对正确的,or 讲的通俗易懂,
因此,也就无法给回答者以反馈,例如我给你的 +1,
也正因为这样,回答者没有反馈,时间久了,也就不贡献回答了。

说的很对,之前题目贡献者还会给出一个标准答案,现在也没有了。

@MoJieBlog
Copy link
Collaborator Author

这种问题就不好回答……
都知道要onMeasure测量尺寸、onLayout中layout到对应的位置,onDraw里面要注意减少对象创建……
但面试的时候这么答,屁用没有

em...回答这些现在确实比较难合格。而且我这里问的是自定义View和ViewGroup。更偏向于说他俩不同的地方,比如事件分发,比如onMeasure,onLayout,onDraw分别是如何处理的。比如那些方法是自定义ViewGroup有的,自定义View没有的。

@zhaoxiuyu
Copy link

自定义 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的,一般都是继承系统控件。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

7 participants