view绘制流程
来源:互联网 发布:exo light软件 编辑:程序博客网 时间:2024/06/06 03:14
view在Android是比较重要而且不容易理解的知识了,尤其是在自定义控件这一块本章就view的绘制流程
做一些了解
一、整体把控
要想了解view的绘制流程,首先要知道Android中的view树结构,如下图
当我们想要绘制view的时候,会遍历DecorView下的每一个view,对每个view的绘制会经过onMeasure,
onLayout,onDraw三个过程,分别为测量、布局、绘制;在每个步骤之前都会先判断是否需要执行,流程
如下
二、步骤详解
1.onMeasure测量
①如果对view对象本身进行测量只需要调用.measure即可,.measure在底层会自动调用onMeasure
②如果view对象类型为ViewGroup,那么要重写onMeasure方法,在onMeaure方法中使用
.getMeasuredWidth()和.getMeasuredHeight()即可
③通过重写onSizeChange()方法获得宽高,onSizeChange()只会在控件大小发生变化时被调用
④通过getViewTreeObserver,view树观察者,当view树都加载完毕后触发观察者就可以测量出值
2.onLayout布局
layout是相对于父布局的,父布局才会给子view定义其在布局中的位置
ViewGroup类重写onLayout方法,再通过子view的.layout布局view在父布局中的位置
.layout(boolean,left,top,right,bottom)
boolean来记录布局是否发生了变化,如果未发生变化那么就不再重新布局子view
3.onDraw(canvas)绘制
本身重写onDraw方法,那么会重新绘制本身,要想绘制子view需要子view调用.draw方法绘制自身
canvas,绘制view的画布
绘制的过程大致如下
绘制自己的背景
绘制自己的内容
绘制子类(子类的draw方法)
4.invalidate
主动调用invalidate会让view的视图失效,这时系统就会重新调用onDraw来完成新的绘制,这也是
Android中一部分动画实现的简单原理,通过改变view的位置,并且在不停的调用invalidate绘制新
位置的图形,在视觉上形成动画的感觉
三、小结
目前学习的知识经不起推敲,一推敲就会发现自己掌握的什么都不是,亚历山大啊,赶快学源码分析吧
通过源码的分析会对知识的掌握更上一层楼
0 0
- Android View绘制流程
- Android View绘制流程
- view的绘制流程
- Android View绘制流程
- Android View绘制流程
- Android View绘制流程
- Android View绘制流程
- android View 绘制流程
- Android View绘制流程
- Android View绘制流程
- Android View绘制流程
- View 的绘制流程
- Android View绘制流程
- View绘制流程图示
- Android View绘制流程
- Android View绘制流程
- Android View绘制流程
- View 绘制流程
- Volley请求Cookie超时/Token认证失效的处理
- 全面解析Linux 内核 3.10.x - 内存管理 - 内存模型
- 倍增法LCA hdu2586 How far away ?
- Apache FTPClient操作“卡死”问题的分析和解决
- 也谈MCMC方法与Gibbs抽样
- view绘制流程
- 北大OJ3302
- 创建第一个scrapy项目
- openjudge 二叉树
- Dia作图过程中添加latex格式字符方法
- (八十五)?: 运算符
- static 修饰全局变量、局部变量和函数的区别
- PV操作与信号灯例子
- Linux如何查看JDK的安装路径