一、单一View

自定义View之Draw过程

二、ViewGroup

自定义View之Draw过程

三、优化细节

1、源码

/**
  *   a. 该标记位的作用是:当一个View不需要绘制内容时,系统进行相应优化
  *   b. 默认情况下:View 不启用该标记位(设置为false);ViewGroup 默认启用(设置为true)
  */ 
public void setWillNotDraw(boolean willNotDraw) {

    setFlags(willNotDraw ? WILL_NOT_DRAW : 0, DRAW_MASK);

}

2、应用场景

  1. setWillNotDraw参数设置为true:当自定义View继承自 ViewGroup 、且本身并不具备任何绘制时,设置为 true 后,系统会进行相应的优化。
  2. setWillNotDraw参数设置为false:当自定义View继承自 ViewGroup 、且需要绘制内容时,那么设置为 false,来关闭 WILL_NOT_DRAW 这个标记位。

相关文章:

  • 2022-02-26
  • 2022-02-07
  • 2021-05-06
  • 2022-01-16
  • 2021-09-29
  • 2021-08-23
  • 2021-10-29
猜你喜欢
  • 2021-07-26
  • 2021-06-24
  • 2021-08-31
  • 2021-12-29
  • 2022-12-23
  • 2021-09-30
  • 2021-10-29
相关资源
相似解决方案