Invalid file path после добавления SVG файла в проект
Всем привет. У меня есть svg файл, который я добавляю, как существующий, в проект. Ниже его код:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="21pt" height="21pt" viewBox="0 0 21 21" version="1.1" xmlns="http://www.w3.org/2000/svg">
<g id="#797979ff">
<path fill="#797979" opacity="1.00" d=" M 20.48 0.00 L 21.00 0.00 L 21.00 20.48 C 20.87 20.61 20.62 20.87 20.49 21.00 L 0.00 21.00 L 0.00 20.38 C 6.82 13.64 14.25 7.00 20.48 0.00 Z" />
</g>
</svg>
Проект не компилируется из-за ошибки Invalid file path '(путь к файлу)'. Что я делаю не так?
Нашел, что android проекты не поддерживают svg. Якобы файлы нужно в xml переделать.
Ответы (2 шт):
Попробуйте убрать устаревшую форму записи - namespace svg
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"
Современная запись namespace
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
Если помню правильно, то запись:
<?xml version="1.0" encoding="UTF-8" ?>
Применялась раньше для standalong (автономных) svg файлов. Тоже лучше убрать, если файл используется в проекте
Итого:
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="21pt" height="21pt" viewBox="0 0 21 21" version="1.1" >
<g id="#797979ff">
<path fill="#797979" opacity="1.00" d=" M 20.48 0.00 L 21.00 0.00 L 21.00 20.48 C 20.87 20.61 20.62 20.87 20.49 21.00 L 0.00 21.00 L 0.00 20.38 C 6.82 13.64 14.25 7.00 20.48 0.00 Z" />
</g>
</svg>
Во-первых, svg надо сконвертировать в vector xml. В AndroidStudio есть для этого пункт меню file->new->vector asset:
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="21dp"
android:height="21dp"
android:viewportWidth="21"
android:viewportHeight="21">
<path
android:pathData="M20.48,0L21,0L21,20.48C20.87,20.61 20.62,20.87 20.49,21L0,21L0,20.38C6.82,13.64 14.25,7 20.48,0Z"
android:fillColor="#797979"/>
</vector>
Во-вторых, не надо создавать никакие папки где попало. В ресурсах все папки имеют свой смысл и назначение. drawable ресурсы кладутся в res/drawable. Именно туда надо поместить сконвертированный из svg в xml файл (он сам туда сложится если пользоваться утилитой см выше).
NB не все svg будут корректно сконвертированы в vector, кроме того объем векторов также важен. Вектора предназначены в основном для иконок на кнопках. Если у вас какое-то большое изображение будет, делайте его в png, 9-patch.png...