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();  
    }  
}  

  

时间: 2024-10-13 16:04:18

View的draw机制的相关文章

Android View框架的draw机制

概述 Android中View框架的工作机制中,主要有三个过程: 1.View树的测量(measure) Android View框架的measure机制 2.View树的布局(layout)Android View框架的layout机制 3.View树的绘制(draw)Android View框架的draw机制 View框架的工作流程为:测量每个View大小(measure)-->把每个View放置到相应的位置(layout)-->绘制每个View(draw).          本文主要讲

View的measure机制

Android中View框架的工作机制中,主要有三个过程: 1.View树的测量(measure)Android View框架的measure机制     2.View树的布局(layout) Android View框架的layout机制     3.View树的绘制(draw)Android View框架的draw机制 View框架的工作流程为:测量每个View大小(measure)-->把每个View放置到相应的位置(layout)-->绘制每个View(draw). 1.系统为什么要有

Android 中View的绘制机制源码分析 一

尊重原创: http://blog.csdn.net/yuanzeyao/article/details/46765113 差不多半年没有写博客了,一是因为工作比较忙,二是觉得没有什么内容值得写,三是因为自己越来越懒了吧,不过最近我对Android中View的绘制机制有了一些新的认识,所以想记录下来并分享给大家.在之后的几篇博客中,我会给大家分享如下的内容: 1.View中measure(),layout(),draw()函数执行过程分析,带领大家详细分析View的尺寸测量过程,位置计算,并最终

从源码角度分析Android View的绘制机制(一)

在Android的学习道路上,每一个人员都免不了去翻阅Android的源码,因为只有从源码的角度分析问题,我们才能真正的玩转Android开发.最近由于工作比较闲,总想着想写点什么东西,正好自己也可以整理一下.考虑到view的显示机制是自定义view的基础,也是面试中经常被问到的问题,所以记录此文,和大家共享,因水平有限,望大家踊跃拍砖,不胜感激. 有过自定义view的同行们都应该知道,view的显示依托于activity的setContentView方法依附到PhoneWindow窗体上的,在

Android View的绘制机制前世今生---前世

就像上个文章说的,触摸事件的传递机制是从外层到内层的过程. 我们想来看看这个页面里面的层级关系: 以下我们就用what-how-why三部曲的方式来分析View的绘制过程. 由于篇幅很大,所以分几篇来解析这个过程. 这篇主要是自定义view/viewgroup,以及从Activity到DecorView的加载过程. 1.what:怎么自定义一个View 1.1自定义View 自定义View的话,常见过程如下: /** * @author DemanMath * @date 2020-02-16

View的layout机制

View框架的工作流程为:测量每个View大小(measure)-->把每个View放置到相应的位置(layout)-->绘制每个View(draw). 源代码分析 在View的源代码中,提取到了下面一些关于layout过程的信息. 我们知道,整棵View树的根节点是DecorView,它是一个FrameLayout,所以它是一个ViewGroup,所以整棵View树的测量是从一个ViewGroup对象的layout方法开始的. View: 1.layout //分配一个位置信息到一个View

View的事件处理机制笔记

View的事件处理机制: 首先得明白onTouch()和OnTouchEvent()有什么区别? 不管是什么控件都有dispatchTouchEvent()方法,当我们点击屏幕首先调用的也是这个方法. 那么,看看dispatchTouchEvent()方法的一段源码: 这就说明: 1.在dispatchTouchEvent()中,如果返回true,执行onTouch()方法:否则才执行onTouchEvent()方法, 也就是说,onTouch()优先于onTouchEvent()执行. 分别看

长谈:关于 View Measure 测量机制,让我一次把话说完

<倚天屠龙记中>有这么一处:张三丰示范自创的太极剑演示给张无忌看,然后问他记住招式没有.张无忌说记住了一半.张三丰又慢吞吞使了一遍,问他记住多少,张无忌说只记得几招了.张三丰最后又示范了一遍,张无忌想了想说,这次全忘光了.张三丰很满意,于是放心让张无忌与八臂神剑去比试. 首先声明,这一篇篇幅很长很长很长的文章.目的就是为了把 Android 中关于 View 测量的机制一次性说清楚.算是自己对自己较真.写的时候花了好几天,几次想放弃,想放弃的原因不是我自己没有弄清楚,而是觉得自己叙事脉络已经紊

Atitit View事件分发机制

1. Atitit View事件分发机制 1. Atitit View事件分发机制1 1.1. 三个关键方法 dispatchTouchEvent onInterceptTouchEvent onTouchEvent1 1.1.1. public boolean dispatchTouchEvent(MotionEvent ev)1 1.1.2. public boolean onInterceptTouchEvent(MotionEvent ev)1 1.1.3. public boolean