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
  • 相关阅读:
    前端工程师们,这些干货让你开发效率加倍
    我的代码片段
    人生至少有一次为了自己的勇气而活
    美食篇之御桥小聚
    美食篇之好好对自己
    F
    Github 简明教程
    A
    完美字符串
    1222: FJ的字符串 [水题]
  • 原文地址:https://www.cnblogs.com/hellenism/p/3675409.html
Copyright © 2011-2022 走看看