开发动机
我们经常使用MPchart来绘制各种类型的图表,非常好用。可以设置各种各样的样式。但是有时候满足不了我们的需求或者我们需要绘制的曲线很简单但是MPchart jar包不小,所以我们需要自定义view自己来绘制Path实现。通过Path绘制曲线比较简单,但是Path下的阴影还没有去实现过。
开发思路
绘制曲线比较简单,Path有方法可以直接绘制:
public void lineTo(float x, float y)
用来绘制直线
public void cubicTo(float x1, float y1, float x2, float y2,float x3, float y3)
用来绘制曲线
我比较疑惑的是曲线下面的阴影应该怎么绘制。我们知道可以使用drawable.draw(canvas)
来绘制Drawable,Drawable可以使用Shape
来创建。那么Drawable怎么在Path的范围之内呢?稍微想一想就知道肯定把canvas
切割成一个形状,然后在该canvas
上绘制Drawable就能实现。于是去看了下MPchart的源码,发现很简单。
有一个核心方法是用Path
切割画布:
/**
* Intersect the current clip with the specified path.
*
* @param path The path to intersect with the current clip
* @return true if the resulting is non-empty
*/
public boolean clipPath(@NonNull Path path) {
return clipPath(path, Region.Op.INTERSECT);
}
所以,实现的代码就出来了。