如何在android

时间:2018-04-16 11:36:45

标签: android kotlin

我需要在android中创建一个凸路径(以便在特定视图使其高程大于0时将其提供给ViewOutlineProvider以投射阴影)

我只使用只添加控制点的path.quadTo(...),所以我认为整个事物将是1个轮廓和凸起。使用计算出的路径时,我的应用会崩溃,因为它会导致java.lang.IllegalArgumentException: path must be convex。另外,println()正在打印“false”

我目前的职能是:

fun calculateConvexPath(topLeftRadius: Float, topRightRadius: Float, bottomLeftRadius: Float, bottomRightRadius: Float, top: Float, left: Float, bottom: Float, right: Float) : Path {
            val path: Path = Path()

            // start from top-left
            val firstPoint = Point(top, left + topLeftRadius)
            path.moveTo(firstPoint.x, firstPoint.y)
            path.quadTo(left, top, left + topLeftRadius, top)

            // move to top right
            path.quadTo(left/2 + right/2, top, right - topRightRadius, top)
            path.quadTo(right, top, right, top + topRightRadius)

            // move to bottom right
            path.quadTo(right, top/2 + bottom/2, right, bottom - bottomRightRadius)
            path.quadTo(right, bottom, right - bottomRightRadius, bottom)

            // move to bottom left
            path.quadTo(left/2 + right/2, bottom, left + bottomLeftRadius, bottom)
            path.quadTo(left, bottom, left, bottom - bottomLeftRadius)

            // move back to top-left
            path.quadTo(left, top/2 + bottom/2, firstPoint.x, firstPoint.y)

            println("path is convex? ${path.isConvex}")
//            path.close() // not working with or without this line
            return path
        }

我看到了this SO question但没有帮助 - 他们也无法创建凸出的路径。

这里的代码是kotlin,但Java答案(当然)会有所帮助。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

它正在工作,它在手机上运行,​​阴影正在投射。它只是安卓工作室没有出现阴影