Android - 如何以编程方式获取 SVG 的 Path 对象?

Android - How to get Path object of an SVG programatically?

我正在尝试在 Android 中屏蔽 canvas。我可以针对特定形状执行此操作,如下所示。

  @Override
  protected void onDraw(Canvas canvas) {
    super.onDraw(canvas );
    Paint mPaint = new Paint();
    mPaint.setColor(getCollageBackgroundColor());
    mPaint.setStyle(Paint.Style.FILL);
    mPaint.setAntiAlias(true);

    Path clipPath = new Path();
    clipPath.addRoundRect(new 
    RectF(getPiecePadding()+100,getPiecePadding()+100,getCollageWidth()- 
    getPiecePadding()-100,getCollageHeight()-getPiecePadding()-100),500,530 , 
       Path.Direction.CW);
    clipPath.setFillType(Path.FillType.INVERSE_EVEN_ODD);
    canvas.drawPath(clipPath,mPaint);
  }

上面的代码是一个圆形的掩码。我希望能够对任何 vectorDrawable 文件执行此操作。有什么方法可以让我在 onDraw 中获取这个 drawable 的 Path 对象吗?

我终于找到了解决办法。为了以后有同样问题的人的利益,我回答我自己的问题。

我的解决方案不是直接解决方案。我正在复制 SVG 中的路径字符串。 我找到了一个名为 Sharp 的图书馆。该库能够从字符串生成路径对象。这是我的代码:

String s= "M0,0h24v24h-24z";
Path path = Sharp.loadPath(s);