博客
关于我
面试题七:View的绘制
阅读量:582 次
发布时间:2019-03-11

本文共 716 字,大约阅读时间需要 2 分钟。

View绘制原理详解

View在Android系统中的绘制过程包括三个核心步骤,每一步都精确配合,确保显示效果符合预期。

1.1 测量阶段

View的绘制首先需要通过measure()方法进行尺寸测量。这个过程是从顶层父View开始,逐层向下递归到目标子View。measure()方法最终会通过onMeasure()方法执行具体的测量逻辑,获取子View的宽高和其他必要参数。

此阶段的关键在于确定每个View的合适尺寸。系统会根据父View的布局参数和约束条件,计算出子View所需的最优尺寸,确保整个界面呈现流畅一致。

1.2 布局阶段

完成测量后,系统会进入布局阶段。父View会根据测量得到的子View尺寸和布局参数,确定子View的最终位置。这个过程通过调用子View的layout()方法来实现,确保整个View树的布局信息准确无误。布局阶段的核心是决定每个子View在Canvas中的绝对位置,使得界面呈现出预期的布局效果。

此阶段特别注意处理多个子View的相对定位和撑持问题,确保不同View之间的关系和距离都能准确呈现。

1.3 绘制阶段

View的最终绘制工作通过调用onDraw()方法来完成。这个过程分为几个关键步骤:

  • 绘制View的背景
  • 绘制视图层
  • 绘制主要内容
  • 处理复杂的子View绘制(如嵌套View)
  • 恢复图层图纹
  • 绘制滚动条等辅助元素
  • 每个环节都精确执行,确保界面不仅形态正确,还能流畅地响应用户交互。

    总结

    从测量、布局到最终绘制,每个阶段都通过精确的逻辑运算和跨层调用,确保最终View呈现既美观又功能性的界面。理解这三个阶段的内在逻辑,是优化View绘制性能和解决常见界面显示问题的基础。

    转载地址:http://kfttz.baihongyu.com/

    你可能感兴趣的文章
    牛客-链表中环的入口节点(Java)
    查看>>
    【ARM自学笔记】ARM Cortex -A中断系统(程序篇)
    查看>>
    解决微信小程序中 calc 失效问题
    查看>>
    JS数组去重的方法
    查看>>
    堆的应用_topK算法和堆排序
    查看>>
    双向链表
    查看>>
    并查集(求连通块数量)
    查看>>
    蓝桥训练 分考场
    查看>>
    最大半连通子图
    查看>>
    Remove Extra one 维护前缀最大最小值
    查看>>
    Linux命令 - pwd命令
    查看>>
    Mysql学习笔记
    查看>>
    最大的和
    查看>>
    跳台阶
    查看>>
    另类加法,走方格的方案数,最近公共祖先
    查看>>
    线程学习5
    查看>>
    [Java Path Finder][JPF学习笔记][7]JPF输出详细程度设置
    查看>>
    GitHub完整记录数据库GHTorrent的下载和安装经验
    查看>>
    SKLearn中SVM参数自动选择的最简单示例(使用GridSearchCV)
    查看>>
    设计模式—— 三:依赖倒置原则
    查看>>