Android: как нарисовать элементы файла .svg отдельно? - PullRequest
0 голосов
/ 22 мая 2018

У меня есть .svg файл с некоторыми элементами в нем.Есть ли способ нарисовать их шаг за шагом на холсте?

Я использую библиотеку com.caverock:androidsvg, но, похоже, нет способа извлечь отдельный элемент.

1 Ответ

0 голосов
/ 25 мая 2018

Вот мой тестовый пример видео.Я скопировал один Path из 250 (белый контур в середине изображения, который не перемещается и не прокручивается).Это был первый Path в документе SVG и первый элемент в List из Path' s
enter image description here

"У меня есть файл .svg с некоторыми элементами. Можно ли как-нибудь нарисовать их на холсте?"

Да, вы можете сделать это (по крайней мере,важные путь данные) см. в руководстве Трассировка пути Android и исходный код в github здесь .Демо (road-trip) извлекает (на самом деле intercepts) Path's , а также анимирует их android.graphics.Path'sandroid.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">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...