我已经阅读了类似于我的问题的答案。
但是,我不明白,我认为那太复杂了。也许你们中的一些人有技巧使其变得简单。我正在使用 'com.github.PhilJay:MPAndroidChart:v2.2.4'
库,顺便说一句。我想像这样的图片制作条形图。
矩形的角的半径约为4dp
。
我还没有找到绘制它的方法。
答案 0 :(得分:0)
看起来没有办法使其简单。最终,我想到了一个笨拙但可行的解决方案,在我的情况下效果很好。 首先,将BarChartRenderer子类化,并将其设置为图表:
class CustomBarRenderer constructor(
chart: BarChart,
animator: ChartAnimator,
vpHandler: ViewPortHandler,
cornerDimens: Float
) : BarChartRenderer(chart, animator, vpHandler)
//...
chart.renderer = CustomBarRenderer(chart, chart.animator, chart.viewPortHandler, cornersDimens)
//...
BarChartRenderer
继承了用于绘制条形线的mRenderPaint
成员,因此,如果您需要进行一些小的修改(条形边框宽度,填充类型或其他任何东西),则可以简单地覆盖mRendererPaint
在您的init
区块中,您一切顺利。
init {
mRendererPaint = Paint().also {
// all paint properties you need
}
}
但这不足以得到圆角条。原因是渲染器在canvas.drawRect
方法内使用drawDataSet
绘制它们,因此我们需要更深入地覆盖它,并将此调用更改为canvas.drawRoundRect
:
override fun drawDataSet(c: Canvas, dataSet: IBarDataSet, index: Int) {
//....
c.drawRoundRect(
buffer.buffer[j], buffer.buffer[j + 1], buffer.buffer[j + 2],
buffer.buffer[j + 3], cornersDimen, cornersDimen, mRenderPaint
)
//....
}
重要-尽管renderer
的大多数成员都是protected
,并且易于使用或覆盖,但仍然有一些private
被使用用于绘制阴影。不幸的是,我不得不删除阴影渲染(首先是因为我不需要阴影渲染),所以对于某些人来说,这可能是一个不完整的解决方案。
答案 1 :(得分:0)
创建了完整的圆角条形图 MPAndroidChart,请查看以下链接:-