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