我正在尝试在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);