总结
1: View 的绘制步骤 :view.draw()
绘制backGround() ----》onDraw () ----》dispatchDraw() ---->drawChild ---->View.draw()
2: 一般我们重写 onDraw() 函数 来绘制具体的内容
3: LinearLayout 函数-----》重写了 onDraw() 函数,来绘制分割线
4: 常见的 绘制图形以及相关的类
RectF 这个类包含一个矩形的四个单精度浮点坐标。矩形通过上下左右4个边的坐标来表示一个矩形
Canvas :Canvas类好比手机中的画纸,我们可以在Canvas上画图形或者图像
Paint类包含有用来画几何图形、文本、位图的类型和颜色等信息,如果把Canvas类看作是画板,那我们可以把Paint类看做是画笔,可以根据需要画出不同颜色和样式的图形、文本等内容
Color: 此类 定义了一些方法来创建和转换颜色值。颜色被表示为封装的数值,这个数值由四个字节组成,分别是:alpha、red、green、blue
Typeface: 类定义字体和字体内在的类型。这个类被用在画笔Paint设置的时候, ypeface 提供了一些常量值来表示自身的一些属性,比如BOLD,BOLD_ITALIC,ITALIC等
Path:类(一组区域)的描画,类囊括多种几何图形比如直线线段、二次曲线、三次曲线等,
调用Canvas.drawPath()方法可以将Path以所定义的paint的方式来画到画板上或者填出图形
5: onDraw() 实例
canvas.drawPath() 参数path封装了多个点的坐标,这些点的坐标是绝对坐标,通过RectF的top 或者right属性得到x和y坐标
canvas.drawCircle 需要x y 中心点和半径来绘制,
绘制扇形 ----》 canvas.drawArc() 需要开始角度和扫过的面积
6: 贝塞尔曲线 :刷礼物;水滴动画;翻书效果;天气预报曲线图等;
贝塞尔曲线是用一系列点来控制曲线状态,这些点分别是起点,终点和控制点,贝塞尔曲线可以简单理解为小球从起点出发, 在外力(控制点)的作用下做曲线运动。
mPath.moveTo :移动到操作起始点坐标,不会进行绘制,只用于移动移动画笔
mPath.lineTo: 从一个点连线到另一个点,用于进行直线绘制
mPath.quadTo(x1, y1, x2, y2):生成二次贝塞尔曲线,(x1,y1) 为控制点(x2,y2)为结束点
mPath.cubicTo(x1, y1, x2, y2, x3, y3):生成三次贝塞尔曲线, (x1,y1) 为控制点,(x2,y2)为控制点,(x3,y3) 为结束点;即与二阶区别多一个控制点