我需要在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答案(当然)会有所帮助。
任何帮助将不胜感激!
答案 0 :(得分:0)
它正在工作,它在手机上运行,阴影正在投射。它只是安卓工作室没有出现阴影