我正在尝试在Android的画布上遮罩。我可以针对以下特定形状执行此操作。

  @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);

10-08 09:03