android.graphics.Path允许使用线段,二次曲线,三次曲线构成路径(类似SVG),Canvas缺省绘制Path时为单色细实线,但在例Android ApiDemos示例解析(65):Graphics->Drawable->ShapeDrawable 我们看到使用PathEffect来修改路径的模式(使用DiscretePathEffect随机更改线段的粗细)。
本例更详细的介绍了其它几种PathEffect的显示效果:
本例定义了六种PathEffect如下:
e[0] = null; // no effect e[1] = new CornerPathEffect(10); e[2] = new DashPathEffect(new float[] {10, 5, 5, 5}, phase); e[3] = new PathDashPathEffect(makePathDash(), 12, phase, PathDashPathEffect.Style.ROTATE); e[4] = new ComposePathEffect(e[2], e[1]); e[5] = new ComposePathEffect(e[3], e[1]);
注意 onDraw的这两行:
mPhase += 1; invalidate();
mPhase 指定的是虚线上虚实偏移,每次加1,相当于交换虚处和实处的位置,而invalidate()将再次出发onDraw ,这样虚实不断变换给人以动画的效果。
而 makePathDash定义了自定义虚线类型上的小箭头图案:
private static Path makePathDash() { Path p = new Path(); p.moveTo(4, 0); p.lineTo(0, -4); p.lineTo(8, -4); p.lineTo(12, 0); p.lineTo(8, 4); p.lineTo(0, 4); return p; }
按方向键上“中间键”将随机产生一个新的绘制路径。