zoukankan      html  css  js  c++  java
  • [Android学习笔记]View的draw过程学习

    View从创建到显示到屏幕需要经历几个过程:

    measure -> layout -> draw

    measure过程:计算view所占屏幕大小
    layout过程:设置view在屏幕的位置
    draw过程:绘制view



    继承自view的控件的draw过程


    draw方法是由viewRoot对象的performTraversale()方法调用的


    draw方法中做了一下几个事:
    1.绘制view的背景
    2.为绘制渐变做准备
    3.回调onDraw()方法
    4.调用dispatchDraw()方法
    5.绘制渐变框


    与draw有关的几个方法:
    invalidate()方法
    请求重新绘制view树,但是只绘制需要绘制的部分

    requestLayout()方法
    请求布局,调用此方法会导致调用measure过程和layout过程,但是不会调用draw过程

    requestFocus()
    请求调用view树的draw过程


    View的绘制过程回调方法调用次数:

    onMeasure -> onLayout -> onMeasure -> onLayout -> onDraw -> 显示屏幕

    onMeasure和onLayout会被调用两次

    人生就是一局不能Again的DOTA
  • 相关阅读:
    java 通过Iterator输出Map
    java SortedSet接口swap方法
    java vector
    java Iterator双向迭代输出
    java 序列化和反序列化多个对象
    培训
    每天晚上

    又想起了

  • 原文地址:https://www.cnblogs.com/hellenism/p/3675409.html
Copyright © 2011-2022 走看看