凹凸轮廓上的棒棒糖高程

我有一个自定义视图,通过使用路径显示星形。 此视图按预期工作,但现在我想将其实现转移到新的Google Material建议。

不幸的是, elevation取决于凸起的轮廓,我还没有find解决方案。

您是否知道任何已知的变通方法或任何其他创造性解决方案?

在此处输入图像描述

这是我的凹路:

  double outerSize = w / 2; double innerSize = w / 5; double delta = 2.0*Math.PI/5.0; double rotation = Math.toRadians(-90); double xpos = w/2.0; double ypos = h/2.0; mPath = new Path(); mPath.moveTo((float)(outerSize * Math.cos(delta + rotation) + xpos), (float)(outerSize * Math.sin(delta + rotation) + ypos)); for(int point= 0;point<6;point++) { mPath.lineTo((float) (innerSize * Math.cos(delta * (point + 0.5) + rotation) + xpos), (float) (innerSize * Math.sin(delta * (point + 0.5) + rotation) + ypos)); mPath.lineTo((float) (outerSize * Math.cos(delta * (point + 1.0) + rotation) + xpos), (float) (outerSize * Math.sin(delta * (point + 1.0) + rotation) + ypos)); } mPath.close(); 

我已经尝试过这个代码,没有成功,它在凸视图上工作正常。

 @TargetApi(21) private class StarOutline extends ViewOutlineProvider { @Override public void getOutline(View view, Outline outline) { StartView r = (StartView) view; // i know here say setConvexPath not setConcavePath outline.setConvexPath(r.mPath); } } 

但正如所料,我得到一个例外:

 java.lang.IllegalArgumentException: path must be convex at android.graphics.Outline.setConvexPath(Outline.java:216) 

知道如何实现这个目标吗?