(为了更好的记忆,用blog写之,学习自扔物线,希望大家都能支持他)在自定义view的onDraw方法中,Path是一个十分有用的类,该类直译为路径,所以很明显,其可以用作画各种线路和图形。具体APIs为。
Path 方法第一类:直接描述路径。
第一组: addXxx() ——添加子图形
- addCircle(float x, float y, float radius, Direction dir) 添加圆
参数解释:x,y,radius分别是原的坐标点,半径,dir表示圆的路径方向,顺时针 CW,逆时针 CCW。 - addOval(float left, float top, float right, float bottom, Direction dir) / addOval(RectF oval, Direction dir) 添加椭圆
参数解释:left,top,right,buttom表示椭圆范围坐标
,dir和上面一样。addRect和addRoundRect和其参数类似 - addRect(float left, float top, float right, float bottom, Direction dir) / addRect(RectF rect, Direction dir) 添加矩形
- addRoundRect(RectF rect, float rx, float ry, Direction dir) / addRoundRect(float left, float top, float right, float bottom, float rx, float ry, Direction dir) / addRoundRect(RectF rect, float[] radii, Direction dir) / addRoundRect(float left, float top, float right, float bottom, float[] radii, Direction dir) 添加圆角矩形
- addPath(Path path) 添加另一个 Path
第二组:xxxTo() ——画线(直线或曲线)
- lineTo(float x, float y) / rLineTo(float x, float y) 画直线
参数解释:x,y需要连接的终点的坐标 rLineTo表示相对当前坐标,即以当前坐标点为坐标系原点,x,y相对的值是对应在该坐标系得到的值。下面的几个r开头的方法类似。 - quadTo(float x1, float y1, float x2, float y2) / rQuadTo(float dx1, float dy1, float dx2, float dy2) 画二次贝塞尔曲线
参数解释:x1,y1控制点坐标,x2,y2终点坐标 - cubicTo(float x1, float y1, float x2, float y2, float x3, float y3) / rCubicTo(float x1, float y1, float x2, float y2, float x3, float y3) 画三次贝塞尔曲线
参数解释:x1,y1控制点1坐标,x2,y2控制点1坐标,x3,y3终点坐标 - moveTo(float x, float y) / rMoveTo(float x, float y) 移动到目标位置
参数解释:x,y目标坐标 - arcTo(RectF oval, float startAngle, float sweepAngle, boolean forceMoveTo)
- arcTo(float left, float top, float right, float bottom, float startAngle, float sweepAngle, boolean forceMoveTo)
- arcTo(RectF oval, float startAngle, float sweepAngle) 画弧形
参数解释:startAngle,启始角度,x正方向为0度,顺时针,sweepAngle 弧形角度,forceMoveTo是否留下从上一点移过来的痕迹,true是留下,false不留下 - addArc(float left, float top, float right, float bottom, float startAngle, float sweepAngle) / addArc(RectF oval, float startAngle, float sweepAngle)
参数解释:arcTo简化版,默认forceMoveTo为true - close() 封闭当前子图形
最后调用:canvas.drawPath(path, paint);
Path 方法第二类:辅助的设置或计算
- Path.setFillType(Path.FillType ft) 设置填充方式
- WINDING
- EVEN_ODD