View的draw机制

Posted 安卓笔记侠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了View的draw机制相关的知识,希望对你有一定的参考价值。

View:
1、draw
//绘制一个View以及他的子View。最好不要覆写该方法,应该覆写onDraw方法来绘制自己。
public void draw(Canvas canvas);

public void draw(Canvas canvas) {  
    1、绘制 backgroud(drawBackground)  ;  
    2、如果需要的话,保存canvas的layer,来准备fading ;  
    3、绘制view的content(onDraw方法);  
    4、绘制children(dispatchDraw方法);  
    5、如果需要的话,绘制fading edges,然后还原layer ;  
    6、绘制装饰器、比如scrollBar(onDrawForeground);  
}  

 

2、onDraw

//绘制一个View的外观。View的默认实现是空实现,所以这里没有源码给出。

protected void onDraw(Canvas canvas);

 
ViewGroup:
1、dispatchDraw
/** 绘制子View,View类是空实现,ViewGroup类中有实现 */
protected void dispatchDraw(Canvas canvas);

protected void dispatchDraw(Canvas canvas) {  
    if (需要绘制布局动画) {  
    for (遍历子View) {  
        绑定布局动画;  
    }  
    启动动画控制,通知动画开始;  
    }  
  
    for (遍历子View) {  
    child.draw();  
    }  
}  

  

以上是关于View的draw机制的主要内容,如果未能解决你的问题,请参考以下文章

View的layout机制

Android View体系从源码解析View的layout和draw流程

View绘制机制

什么机制导致在 Fragment 到 Fragment 导航中调用 View.onSaveInstanceState?

反思|Android View机制设计与实现:布局流程

反思|Android View机制设计与实现:测量流程