前言
参考一位大神的 自定义 View 系列文章,其中一篇的链接为:
http://www.gcssloop.com/customview/CoordinateSystem文章的内容基本是链接的形式,因为大神写的很详细,本人是抱着学习的心态来总结的
内容涉及的是自定义 View 的实现原理,包含贝塞尔曲线、Matrix(矩阵)等
正文
基础部分
1. Android 中的坐标系
因为比较基础,而且有总结的很好的:http://www.gcssloop.com/customview/CoordinateSystem
里边讲的内容大致分三点:
数学中的坐标系与手机屏幕中的坐标系的差别
View 的坐标系是相对于父控件而言的
MotionEvent 中 get 和 getRaw 的区别
2. 角度和弧度
三方链接:http://www.gcssloop.com/customview/AngleAndRadian
角度和弧度一般会在制作一些复杂炫酷的效果时,会用到相关知识。
概念 :
角度: 两条射线从圆心向圆周射出,形成一个夹角和夹角正对的一段弧。当这段弧长正好等于圆周长的360分之一时,两条射线的夹角的大小为1度.
弧度 :两条射线从圆心向圆周射出,形成一个夹角和夹角正对的一段弧。当这段弧长正好等于圆的半径时,两条射线的夹角大小为1弧度.
3. 颜色
三方链接:http://www.gcssloop.com/customview/Color
进阶部分
1. 自定义 View 的分类和流程简介
三方链接: http://www.gcssloop.com/customview/CustomViewProcess
2. Canvas 之绘制图形
三方链接: http://www.gcssloop.com/customview/Canvas_BasicGraphics
主要介绍了常用的绘制图形,点、矩形、圆、椭圆等
关于画笔 Paint 的一些简要介绍
一个饼状图的案例
Canvas 的常用操作速查表:
3. Canvas 之画布操作
三方链接: http://www.gcssloop.com/customview/Canvas_Convert
1. 位移 ( translate )
translate 是坐标系的移动,可以为图形绘制选择一个合适的坐标系。 请注意,位移是基于当前位置移动,而不是每次基于屏幕左上角的 ( 0 , 0 ) 点移动
2. 缩放 ( scale )
|
|
这两个方法中前两个参数是相同的分别为x轴和y轴的缩放比例。而第二种方法比前一种多了两个参数,用来控制缩放中心位置的,第一种方法表示缩放的中心默认为坐标原点。
- 缩放是可以叠加的
3. 旋转 ( rotate )
|
|
和缩放一样,第二种方法多出来的两个参数依旧是控制旋转中心点的,默认的旋转中心依旧是坐标原点。
- 缩放也是可以叠加的
4. 错切 ( skew )
|
|
- float sx:将画布在 x 轴方向上倾斜相应的角度,sx 为倾斜角度的 tan 值,
- float sy:将画布在 y 轴方向上倾斜相应的角度,sy 为倾斜角度的 tan 值。
5. 快照 ( save ) 和回滚 ( restore )
每调用一次save方法,都会在栈顶添加一条状态信息
4. Canvas 之图片文字
三方链接: http://www.gcssloop.com/customview/Canvas_PictureText
- 绘制图片有两种方法,drawPicture ( 矢量图 ) 和 drawBitmap ( 位图 )
1. drawPicture
- 使用 Picture 前请关闭硬件加速,以免引起不必要的问题!
|
|
可以把 Picture 看作是一个录制 Canvas 操作的录像机。
Picture 相关的 API
beginRecording 和 endRecording 是成对使用的,一个开始录制,一个是结束录制,两者之间的操作将会存储在 Picture 中。
- 将 Picture 中的内容绘制出来可以有以下几种方法:
2. drawBitmap
- 获取 Bitmap 的方式:
绘制文字
- 常用 API
|
|
第一类只能指定文本基线位置(基线x默认在字符串左侧,基线y默认在字符串下方)。
第二类可以分别指定每个文字的位置。
第三类是指定一个路径,根据路径绘制文字。
- 绘制文字也需要画笔 Paint
- 链接中有 API 使用的详细介绍
5. Canvas 之 Path 的基本操作
三方链接: http://www.gcssloop.com/customview/Path_Basic
Path 的作用:
- 使用 Path 不仅能够绘制简单图形,也可以绘制这些比较复杂的图形。另外,根据路径绘制文本和剪裁画布都会用到Path
6. Path 之贝塞尔曲线
三方链接: http://www.gcssloop.com/customview/Path_Bezier
1. 贝塞尔曲线的作用:
贝塞尔曲线的运用是十分广泛的,可以说贝塞尔曲线奠定了计算机绘图的基础 ( 因为它可以将任何复杂的图形用精确的数学语言进行描述 ) ,在你不经意间就已经使用过它了。
2. 使用实例
7. PathMeasure
三方链接: http://www.gcssloop.com/customview/Path_PathMeasure
- PathMeasure 是一个用来测量 Path 的类,主要有以下方法:
8. 矩阵 Matrix
Matrix 原理: http://www.gcssloop.com/customview/Matrix_Basic
Matrix 详解: http://www.gcssloop.com/customview/Matrix_Method
Matrix Camera : http://www.gcssloop.com/customview/matrix-3d-camera