Я новичок в создании векторных изображений. Я начал изучать, как их создавать, потому что мне нужны пользовательские значки для приложения Android, над которым я сейчас работаю. И здесь начинается проблема. Я создаю значки с помощью Inkscape, и когда я пытаюсь преобразовать их в VectorDrawable с помощью Android Studio, он возвращает ошибку о том, что не поддерживает определенные вещи:
ERROR@ line 22 <defs> is not supported
WARNING@ line 139 We don't scale the stroke width!
WARNING@ line 144 We don't scale the stroke width!
WARNING@ line 150 We don't scale the stroke width!
WARNING@ line 156 We don't scale the stroke width!
WARNING@ line 162 We don't scale the stroke width!
WARNING@ line 168 We don't scale the stroke width!
WARNING@ line 174 We don't scale the stroke width!
Сначала я попытался каким-то образом преобразовать путь к объекту в Inkscape, но это не сработало. Затем я искал некоторые решения в Интернете и нашел следующий веб-сайт: http://inloop.github.io/svg2android/ Там я мог преобразовать значок, но теперь я могу использовать его только для Android 7.0 и выше, потому что я использовал атрибут ' правило-заполнения:evenodd'.
Теперь вот мой вопрос: как убедиться, что я использую только правильные атрибуты при создании значка, и как я могу заставить свой значок работать на Android?
Если вы хотите следить за моей попыткой решить проблему, здесь вы можете скачать мой файл SVG: https://dl.dropboxusercontent.com/u/213285061/Foren/Biologie_Icon.svg
Спасибо за каждый совет.
Сохраните как «Обычный SVG» в Inkscape.
Примечание. Начиная с Inkscape 0.91, если вы сохраните как «Обычный SVG», а затем просто выполните обычное «Сохранить», он снова будет сохранен как Inkscape SVG. Поэтому вам нужно каждый раз сохранять и явно выбирать простой SVG.
Связанный вопрос о преобразовании SVG в VectorDrawable: Inkscape экспортирует XML для каталога ресурсов Android
Формат сохранения Inkscape по умолчанию — «Inkscape SVG», который представляет собой обычный файл SVG, совместимый со стандартом SVG 1.1, вместе с метаданными и дополнительной информацией, используемой Inkscape в inkscape
пространстве имен.
Это совершенно правильный SVG, и большинство программ рендеринга, таких как браузеры, не имеют с этим проблем. Похоже, ваш рабочий процесс для преобразования из SVG в VectorDrawable XML задыхается от этого кода, специфичного для Inkscape (хотя <defs>
действителен ванильный SVG).
Сохранение как «Обычный SVG» удаляет все эти дополнительные данные и любые функции, которые не входят в стандарт SVG. Это улучшит совместимость с другими программами (такими как ваша), но вы можете потерять некоторую информацию, в зависимости от рисунка.
На сегодняшний день наиболее распространенной нестандартной функцией SVG, которую используют люди, является поток текста. Они создаются путем перетаскивания для создания текстового поля (вместо простого щелчка). Обтекание текстом не поддерживается в SVG — многие программы просто игнорируют текст.
В меню « Текст » в Inkscape есть параметр для преобразования потока текста в обычный текстовый объект SVG.
В большинстве случаев проблемный элемент можно просто преобразовать в путь.
В дополнение к использованию «Обычного SVG» есть несколько других функций для настройки дерева SVG в выходных данных Inkscape.
<marker>
узлах.
Scribblemacher
Стив2955
Scribblemacher
Scribblemacher
inkscape:
пространстве имен. Возможно, Android Studio сбивается с толку из-за данных пространства имен, используемых Inkscape в формате сохранения по умолчанию.Стив2955
Scribblemacher
Алектас