画圆角线自订检视

问题描述

如果百分比值大于2,则正常绘制线条,但如果小于,则线条被分隔线重叠(如图所示)

enter image description here

我的代码

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
)

你怎么画得更好?

我们需要这个结果。每个元素都有一条单独的圆形线(向内开始,向外结束)

enter image description here

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)