Вот мой тестовый пример видео.Я скопировал один Path
из 250 (белый контур в середине изображения, который не перемещается и не прокручивается).Это был первый Path
в документе SVG
и первый элемент в List
из Path'
s
"У меня есть файл .svg
с некоторыми элементами. Можно ли как-нибудь нарисовать их на холсте?"
Да, вы можете сделать это (по крайней мере,важные путь данные) см. в руководстве Трассировка пути Android и исходный код в github
здесь .Демо (road-trip
) извлекает (на самом деле intercepts
) Path's , а также анимирует их android.graphics.Path's
(с android.animation.ObjectAnimator
). You Tube .
Библиотека, которую я выбрал, androidsvg
, проста в использовании, но не дает доступа к путям, содержащимся в документе SVG
.Я обошел эту проблему, создав собственный холст, который перехватывает drawPath()
вызовы:
//list of Path's
private final List<VecPath> mPaths = new ArrayList<VecPath>();
Canvas canvas = new Canvas() {
private final Matrix mMatrix = new Matrix();
@Override
public void drawPath(Path path, Paint paint) {
Path dst = new Path();
// Get the current transform matrix
getMatrix(mMatrix);
// Apply the matrix to the path
path.transform(mMatrix, dst);
// Store the transformed path
mPaths.add(new SvgPath(dst, new Paint(mSourcePaint)));
}
};
// Load an SVG document
SVG svg = SVG.getFromResource(context, R.raw.map_usa);
// Capture the paths
svg.renderToCanvas(canvas);
Примечание
Помните, что формат .SVG
- это document file, not просто простой тип векторного изображения.Вы возможно можете изменить viewBox
, чтобы выбрать различные изображения из вашего .SVG
документа, используя код выше.
<svg
width="650"
height="1000"
viewBox="40 350 900 1050"
id="svg1">