在最近的项目中,需要实现横向柱状图的圆角样式,如图:
而MPAndroidChart默认是矩形,所以参考了另一篇博客,在源码里面做如下修改:
-
找到HorizontalBarChartRenderer这个类,定位到如下代码:
c.drawRect(buffer.buffer[j], buffer.buffer[j + 1], buffer.buffer[j + 2], buffer.buffer[j + 3], mRenderPaint);
-
将此处修改为:
RectF rectF=new RectF(buffer.buffer[j], buffer.buffer[j + 1], buffer.buffer[j + 2],buffer.buffer[j + 3]); c.drawRoundRect(rectF,(float)25,(float)25,mRenderPaint);
这样,就可以实现圆角矩形的绘制了。
-
但是,如果想要自定义四个角的弧度,就需要使用Path类绘制。做以下修改:
RectF rectF=new RectF(buffer.buffer[j], buffer.buffer[j + 1], buffer.buffer[j + 2],buffer.buffer[j + 3]); Path path = new Path(); //float数组中4个角分别是左上、右上、右下、左下 path.addRoundRect(rectF,new float[]{0, 0, 20, 20, 20, 20, 0, 0},Path.Direction.CCW); c.drawPath(path,mRenderPaint);
这样,就可以实现四个角的自定义绘制了,附上效果图:
最后,我使用的是横向柱状图HorizontalBarChart,竖柱状图修改也与上面类似,只需要找到BarChartRenderer类做以上修改即可。