Skip to content

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

Open

Description

@MoJieBlog
  • onMeasure
  • onDraw
  • dispatchDraw
  • onLayout
  • ......

Activity

  1. gabyallen commented on Nov 19, 2019

    @gabyallen

    onMeasure
    onDraw
    dispatchDraw
    onLayout
    onKeyDown()

  2. changed the title [-]2019-11-19:谈一谈自定义View和自定义ViewGroup?[/-] [+]2019-11-19:谈一谈自定义View和自定义ViewGroup?[/+] on Nov 20, 2019
  3. Squirtle12 commented on Nov 20, 2019

    @Squirtle12

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

  4. DQSecret commented on Nov 20, 2019

    @DQSecret

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

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

  5. weikano commented on Nov 20, 2019

    @weikano

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

  6. Squirtle12 commented on Nov 20, 2019

    @Squirtle12

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

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

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

  7. MoJieBlog commented on Dec 5, 2019

    @MoJieBlog
    CollaboratorAuthor

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

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

  8. zhaoxiuyu commented on Jan 16, 2020

    @zhaoxiuyu

    自定义 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

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions