View的draw onDraw dispatchDraw顺序
绘制VIew本身的内容,通过调用View.onDraw(canvas)函数实现
绘制自己的孩子通过dispatchDraw(canvas)实现
View组件的绘制会调用draw(Canvas canvas)方法,draw过程中主要是先画Drawable背景,对 drawable调用setBounds()然后是draw(Canvas c)方法.有点注意的是背景drawable的实际大小会影响view组件的大小,drawable的实际大小通过getIntrinsicWidth()和getIntrinsicHeight()获取,当背景比较大时view组件大小等于背景drawable的大小
画完背景后,draw过程会调用onDraw(Canvas canvas)方法,然后就是dispatchDraw(Canvas canvas)方法, dispatchDraw()主要是分发给子组件进行绘制,我们通常定制组件的时候重写的是onDraw()方法。值得注意的是ViewGroup容器组件的绘制,当它没有背景时直接调用的是dispatchDraw()方法, 而绕过了draw()方法,当它有背景的时候就调用draw()方法,而draw()方法里包含了dispatchDraw()方法的调用。因此要在ViewGroup上绘制东西的时候往往重写的是dispatchDraw()方法而不是onDraw()方法,或者自定制一个Drawable,重写它的draw(Canvas c)和 getIntrinsicWidth(),
getIntrinsicHeight()方法,然后设为背景。
参见http://blog.csdn.net/czh0766/archive/2010/08/05/5790295.aspx
View的draw onDraw dispatchDraw顺序相关推荐
- android view组件draw onDraw,dispatchDraw
Android的view组件显示主要经过mesure, layout和draw这三个过程.在mesure阶段里调用mesure(int widthSpec, int heightSpec)方法,这个方 ...
- Android 自己定义View须要重写ondraw()等方法
Android 自己定义View须要重写ondraw()等方法.这篇博客给大家说说自己定义View的写法,须要我们继承View,然后重写一些 方法,方法多多,看你须要什么方法 首先写一个自己定义的V ...
- view组件draw,onDraw,dispatchDraw
Android的view组件显示主要经过mesure, layout和draw这三个过程.在mesure阶段里调用mesure(int widthSpec, int heightSpec)方法,这个方 ...
- draw() onDraw() 有区别?
绘制VIew本身的内容,通过调用View.onDraw(canvas)函数实现 绘制自己的孩子通过dispatchDraw(canvas)实现 View组件的绘制会调用draw(Canvas canv ...
- 自定义View:测量measure,布局layout,绘制draw
1. 什么是View 在Android的官方文档中是这样描述的:表示了用户界面的基本构建模块.一个View占用了屏幕上的一个矩形区域并且负责界面绘制和事件处理. 手机屏幕上所有看得见摸得着的都是Vie ...
- Android布局原理与优化
Android布局原理与优化 目录: 绘制原理 CPU与GPU Android 图形系统的整体架构 RenderThread 硬件加速和软件绘制 invalidate软件绘制流程 invalidate ...
- android图形动画
学习View的时候看到的,记录下 Android图形动画 作者 朱才:http://cnblogs.com/zhucai/ 朱才 微博:http://weibo.com/zhucai 2017/8/1 ...
- Android基础 硬件加速和软件绘制 invalidate和RequestLayout流程
前言 本文介绍了硬件加速和软件绘制的区别: 并梳理了最简单的情况,在子View(非ViewGroup)调用invalidate的流程,且忽略绘图缓存,即mLayerType == LAYER_TYPE ...
- View的绘制流程-measure、layout、draw
承接上文--Window.DecorView.ViewRootImp详解 我们打开一个Activity后,在ActivityThread中 的performLaunchActivity方法中,回调Ac ...
最新文章
- class转java_[拒绝套路,纯干货]这一百多道 Java 基础问题你掌握了吗?
- Chart.js-线形图分析(参数分析+例图)
- apache 定义日志格式 及日志记录
- 配置静态路由下一跳为本地出战接口和IP地址的区别
- oracle证书洛阳,ORACLE手工建库
- 网易云音乐评论催泪刷屏?我用Python抓取了1008328条热评告诉你为什么!
- 使用反射获得jar包中的类、方法、参数、返回值类型,然后动态加载jar包运行方法
- Ant :Property
- socket.io html5 聊天,WebSocket探讨之——socket.io搭建多聊天室
- 子空间方法——MUSIC算法
- 王码五笔98版forwin10_王码五笔98版-王码五笔98版64位 兼容王码五笔86版 - 快盘下载...
- 公众号运营实用小工具推荐
- android 焦点获取问题(手机端和TV端)
- 简述一下mysql与sqlyog的安装
- div border合并
- 基于龙芯CPU中标麒麟操作系统的国产半实物仿真系统ETestDEV
- android开发网站的流程图,Android_客户端开发流程图及案例.pdf
- 元宇宙”成时下热点 中国古人是如何认识“宇宙”的?
- JavaWeb---web
- 和2016年的自己握手言和