问题描述
如果百分比值大于2,则正常绘制线条,但如果小于,则线条被分隔线重叠(如图所示)
我的代码
var data: List<Item> = mutablelistof(Item(50F),Item(20F),Item(10F),Item(1F),Item(9F))
public override fun onDraw(canvas: Canvas) {
val radius: Float = height.toFloat() / 2F
val rectTop: Float = 0F
val rectBottom: Float = height.toFloat()
val percentWidth: Float = width.toFloat() / 100F
var rectRight: Float = width.toFloat()
//data is List<Item>
data.asReversed().forEachIndexed { index,item ->
val rectLeft: Float = rectRight - (percentWidth * item.percent)
p.color = Color.BLACK
rectf.set(rectLeft,rectTop,rectRight,rectBottom)
canvas.drawRoundRect(rectf,radius,p)
if (index < data.size - 1) {
// rectangular start
rectf.set(rectLeft,rectRight - radius,rectBottom)
canvas.drawRoundRect(rectf,0F,p)
}
// after drawing the line,move the right limit to the place of the beginning of the prevIoUs line
rectRight = rectLeft
if (index < data.size - 1) {
// add inner rounding
p.color = delimiterColor
rectf.set(rectLeft - lineOffset * 3F,rectLeft + lineOffset / 1.4F,p)
}
}
}
data class Item(
val percent: Float //0.1 to 100.0
)
你怎么画得更好?
我们需要这个结果。每个元素都有一条单独的圆形线(向内开始,向外结束)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)