Android开发笔记(十三)视图绘制的几个方法
2015-12-08 17:25
302 查看
三个可进行绘制的方法
在自定义视图中,有三个函数可以重写用于界面绘制,在视图创建过程中,三个函数的执行顺序依次是:onLayout、onDraw、dispatchDraw。1、onLayout(boolean changed, int left, int top, int right, int bottom) :
onLayout用于定位该视图在上级视图中的位置,从其参数中就可以看出来。由于该函数没有画布,因此只适合绘制现成的视图控件。
2、onDraw(Canvas canvas) :
自定义控件一般是重写onDraw方法,在画布中绘制各种图形。
3、dispatchDraw(Canvas canvas) :
dispatchDraw与onDraw的区别在于:onDraw在绘制下级视图之前,而dispatchDraw在绘制下级视图之后,所以如果不想自己的绘图被下级视图覆盖的话,就要在dispatchDraw中进行绘制操作。为方便记忆,只要是从ViewGroup衍生出的视图,都用dispatchDraw,其他小控件都用onDraw。
Canvas画布的使用
Canvas是Android提供的图形操作类,Canvas的使用不难,多练习几次就熟练了。下面列出Canvas的常用方法:划定可绘制的区域(裁剪区域)
虽然本视图内的所有区域都是可以绘制的,但是有时候我们还是只想在某个圆形区域或者矩形区域内部画画,那么在绘制之前就得指定允许绘制的区域大小clipPath : 裁剪不规则曲线区域
clipRect : 裁剪矩形区域
clipRegion : 裁剪一块组合区域
在区域内部绘制图形
drawBitmap : 绘制图像drawCircle : 绘制圆形
drawLine : 绘制直线
drawOval : 绘制椭圆
drawPath : 绘制路径,即不规则曲线
drawPoint : 绘制点
drawRect : 绘制矩形
drawText : 绘制文本
移动整个画布
rotate : 旋转画布scale : 缩放画布
translate : 平移画布
存取画布的状态
Canvas的不同绘制操作会互相影响,比如说我们想对整个画布做旋转,除了某个直线(即该直线保持不动),如果没有状态机制,那么该直线也只能跟着旋转。有了状态机制,我们就可以在绘制该直线前保存画布状态(保存旋转操作),然后画直线,最后再恢复画布状态。这样在save-restore代码之间绘制的任何图形,都不会收到save-restore代码以外其他图形操作的影响。save : 保存画布状态
restore : 恢复画布状态
画笔Paint的使用
在上述绘制图形函数当中,都需要指定Paint,Paint上定义了画笔的颜色、样式、粗细、阴影、下划线等等。Paint的常用操作包括:setAntiAlias : 设置是否使用抗锯齿功能,主要用于画圆圈等曲线
setColor : 设置画笔的颜色
setShader : 设置画笔的渐变效果
setShadowLayer : 设置画笔的阴影
setStyle : 设置画笔的样式(线条还是填充)
setStrokeWidth : 设置线条的粗细
setUnderlineText : 设置文本的下划线
setStrikeThruText : 设置文本的删除线
相关文章推荐
- 【Android自定义View 一】第一个自定义的控件
- Android相机启动加速
- android 自定义圆形进度条(一)
- Android Studio 修改Logcat的颜色
- 浅析总结 Android studio 中 Gradle 配置运行
- Android使用ViewPager、PhotoView实现类似QQ空间图片浏览功能
- Android开发之布局的学习
- android中sdcard的写入。还有SharedPreferences的操作
- Android上的断点续传下载原理
- Android官方文档翻译 十三 3.1Supporting Different Languages
- 【已解决】Android 6.0权限设置,导致程序崩溃
- Android Studio快捷键大全
- Android自定义View滑动事件处理总结
- 小猪的Android入门之路 Day 3 - part 2
- 小猪的Android入门之路 Day 3 - part 1
- 小猪的Android入门之路 Day 2
- 小猪的Android入门之路 day 1
- 深入了解HelloAndroid下的三个文件
- Android ADT与SDK的更新问题解决方法
- android LruCache 原理 以及 源代码解析