绘制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本身的内容,通过调用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
分享到:
相关推荐
OnDraw--paint.setColorFilter,实现PatternView的画 点 和圆环 效果
view.onDraw–>canvas.draw–>rasterizer–> view.onDraw–>canvas.draw- openGL–>GPU–>rasterizer-> 1. Canvas.draw 绘制 录制 2. view 3. GPU JANK Drawing without VSync JellyBean 4.1 Drawing with VSYnc ...
ondraw不执行,请大神帮忙
基于Android studio实现的电池控件view,有水平和垂直两个方向,同时根据电池电量更改电池中的电量颜色 1.在values目录下新建attrs,添加所需要的名字啊,包括可以更改的电池排列方向,电池颜色,电池电量。 2.创建...
详细介绍OnDraw与OnPaint有什么区别
31.OnDraw和OnPaint 32.win32程序的消息响应机制是如何实现的 33.MFC中的消息响应机制是如何实现的 34.WM_COMMAND命令消息处理顺序 35.MFC序列化的概念 36.PeekMessage和GetMessage的主要区别 37.WIN32创建...
自定义VIew之onDraw方法Demo,以及总结;
【RecyclerView】 八、RecyclerView.ItemDecoration 条目装饰 ( onDraw 和 onDrawOver 绘制要点 ) https://hanshuliang.blog.csdn.net/article/details/113310176 博客源码快照
OnPaint()与OnDraw()的区别
Android 中View.onDraw(Canvas canvas)的使用方法 View通过View.onDraw(Canvas canvas)来Draw. 我们可以定义自己的继承于View的TestView,然后重载View.onDraw(Canvas canvas). 对于自定义的TestView如何与Activity...
MFC橡皮筋绘图线,矩形,圆,多边形demo
本文讲述绘制Android自定义各种...绘制点–这个控件只需要在布局中引用或者代码中new 即可,下面几个绘制只展示onDraw方法 package com.example.viewdemo1.view; import android.content.Context; import android.
更多内容见: VC共享乐园vcshare.net 何丹的论坛hedanwang.cn/bbs/
自绘控件的内容都是自己绘制出来的 大致流程如下: 1.定义一个类继承view ...declare-styleable 声明自定义属性可以自定义一个新属性也可以引用已经存在的属性两者的区别就是新属性需要添加format进行类型的定义 3
圆弧很简单,自定义个View,创建个Paint,设置 arcPaint.setStyle(Paint.Style.STROKE)再设置圆弧的宽,再在onDraw内调用canvas.drawArc()就好了 现在只做一个带刻度的圆弧和一个开口地方是圆角的圆弧。其他各种效果...
如何让CDC上输出的文字、图形具有保持功能,集合类CPtrArray的使用,CPaintDC与CClientDC的区别与应用,OnPaint与OnDraw在CView中的关系及实现内幕,滚动窗口的实现,坐标空间,映射方式,设备坐标与逻辑坐标的转换...
android绘制圆形图片的两种方式 看下效果先 ...1. 创建一个类 继承imageView 重写onDraw() 2. 获取到bitmap图片 3. 计算图片的缩放比例 使用矩阵matrix 进行缩放 4. 创建BitmapShader着色器
mfc单文档画圆,用ondraw函数实现
NULL 博文链接:https://hz-chenwenbiao-91.iteye.com/blog/2082286